2010-05-18 4 views
15

Я только что наткнулся на это dired mode screen в Википедии. Я изучаю эти настройки.Настройка dired

Что касается цветов, я думаю, что просто указать правильные лица, но как мне поступить, чтобы показать размер файла в килобайтах по умолчанию? И доступное пространство в МБ (верхняя строка)?

ответ

13

Чтобы получить размер файла в килобайтах, вы можете настроить переменную dired-listing-switches использовать опцию -k:

(setq dired-listing-switches "-alk") 

Вы должны сделать немного больше работы, чтобы получить общее количество/число доступных в МБ. Это работало на моей системе Linux, но доступная часть не смогла работать на моем окне Windows:

(setq directory-free-space-args "-Pm") 
(defadvice insert-directory (after insert-directory-adjust-total-by-1024 activate) 
    "modify the total number by dividing it by 1024" 
    (save-excursion 
(save-match-data 
    (goto-char (point-min)) 
    (when (re-search-forward "^ *total used in directory \\([0-9]+\\) ") 
    (replace-match (number-to-string (/ (string-to-number (match-string 1)) 1024)) nil nil nil 1))))) 
+11

На Linux, попробуйте «-alh». – huaiyuan

+0

Tks для ответа. Доступная часть также не работает на быков (я расскажу об этом позже). –

+1

@huaiyuan Опция 'h' делает человека понятным, он не использует постоянный размер (как и запрос). Мне нравится «h» вообще. –

4

Вы не просили, но я думал, что я хотел бы добавить ....

Я хотел быть в состоянии легко сортировать обработанный вывод по размеру и расширению, а также имя и время. Я знаю, что могу сделать это с M-x universal-argument dired-sort-toggle-or-edit, но я хотел, чтобы он был доступен на ключ s, чтобы сделать его быстрым.

;; Redefine the sorting in dired to flip between sorting on name, size, 
;; time, and extension, rather than simply on name and time. 

(defun dired-sort-toggle() 
    ;; Toggle between sort by date/name. Reverts the buffer. 
    (setq dired-actual-switches 
     (let (case-fold-search) 

      (cond 

      ((string-match " " dired-actual-switches) ;; contains a space 
      ;; New toggle scheme: add/remove a trailing " -t" " -S", 
      ;; or " -U" 

      (cond 

      ((string-match " -t\\'" dired-actual-switches) 
       (concat 
       (substring dired-actual-switches 0 (match-beginning 0)) 
       " -X")) 

      ((string-match " -X\\'" dired-actual-switches) 
       (concat 
       (substring dired-actual-switches 0 (match-beginning 0)) 
       " -S")) 

      ((string-match " -S\\'" dired-actual-switches) 
       (substring dired-actual-switches 0 (match-beginning 0))) 

      (t 
       (concat dired-actual-switches " -t")))) 

      (t 
      ;; old toggle scheme: look for a sorting switch, one of [tUXS] 
      ;; and switch between them. Assume there is only ONE present. 
      (let* ((old-sorting-switch 
        (if (string-match (concat "[t" dired-ls-sorting-switches "]") 
             dired-actual-switches) 
         (substring dired-actual-switches (match-beginning 0) 
            (match-end 0)) 
         "")) 

         (new-sorting-switch 
         (cond 
         ((string= old-sorting-switch "t") 
          "X") 
         ((string= old-sorting-switch "X") 
          "S") 
         ((string= old-sorting-switch "S") 
          "") 
         (t 
          "t")))) 
        (concat 
        "-l" 
        ;; strip -l and any sorting switches 
        (dired-replace-in-string (concat "[-lt" 
                dired-ls-sorting-switches "]") 
              "" 
              dired-actual-switches) 
        new-sorting-switch)))))) 

    (dired-sort-set-modeline) 
    (revert-buffer)) 
1

Кроме того, дисплей в Dired позволяет только 9 пространства, так и для очень больших файлов, на дисплее в Dired будет получить перепутано. И снова это потребовало переопределения fn. В этом случае, один из Ls-lisp.el:

;; redefine this function, to fix the formatting of file sizes in dired mode 
(defun ls-lisp-format-file-size (file-size human-readable) 
    (if (or (not human-readable) 
      (< file-size 1024)) 
     (format (if (floatp file-size) " %11.0f" " %11d") file-size) 
    (do ((file-size (/ file-size 1024.0) (/ file-size 1024.0)) 
     ;; kilo, mega, giga, tera, peta, exa 
     (post-fixes (list "k" "M" "G" "T" "P" "E") (cdr post-fixes))) 
     ((< file-size 1024) (format " %10.0f%s" file-size (car post-fixes)))))) 

(он просто заменяет 9,0 с 11,0, и 8,0 с 10,0, в строках формата)

7

На самом деле, это скриншот почти наверняка из Dired+, хотя в сопроводительном тексте создается впечатление, что это от Vanilla Emacs (XEmacs?), а атрибуция для скриншота - «Команда разработчиков Emacs».

Так что да, ответ заключается в том, что вы можете легко получить этот внешний вид, используя Dired + и просто настроить грани по умолчанию: M-x customize-group Dired-Plus.

18

Я столкнулся с той же проблемой и нашел, как сменить переключатели на лету.

Таким образом, хотя в Dired буфере

C-u s

теперь вы можете изменить переключатели, используемые Ls. Добавить h делать получить человек читаемого размера файла

Вы можете добавить другие переключатели тоже, например, я изменил его на -alsh и теперь сортирует по размеру файла

+0

Какова команда/функция, связанная с этим связыванием ключей?'describe-key' останавливается на C-u, поэтому он возвращает' универсальный-аргумент'. – nephewtom

+0

@nephewtom это 'dired-sort-toggle-or-edit'. Внутри исполняемого буфера делать 'C-x k' то' s'. Вы действительно отправляете универсальный аргумент u в 'dired-sort-toggle-or-edit' –

+0

примечание, что '-alsh' должно быть '-alSh' для сортировки по размеру файла, это важно – bph