2010-05-18 17 views
15

Acabo de encontrar este dired mode screen en Wikipedia. Estoy buscando esas personalizaciones.Customizing dired

En cuanto a los colores, creo que bastará con especificar las caras correctas, pero ¿cómo puedo ver el tamaño del archivo en kbytes de forma predeterminada? Y el espacio disponible en MB (línea superior)?

Respuesta

13

Para obtener los tamaños de archivo en kilobytes, puede personalizar la variable dired-listing-switches de usar la opción -k:

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

Tienes que hacer un poco más de trabajo para obtener el total de los números disponibles en MB /. Esto funcionó en mi sistema Linux, pero no la parte disponible para trabajar en mi caja de 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

En Linux, intente "-alh". – huaiyuan

+0

Tks por la respuesta. La porción disponible también falla en los bueyes (lo analizaré más adelante). –

+1

@huaiyuan La opción 'h' es legible por humanos, no usa un tamaño constante (como era la solicitud). Me gusta 'h' en general aunque. –

4

usted no pidió, pero pensé que me gustaría añadir ....

quería ser capaz de ordenar fácilmente la salida direccional por tamaño y extensión, así como el nombre y la hora. Sé que puedo hacerlo con M-x universal-argument dired-sort-toggle-or-edit, pero quería que estuviera disponible en la clave s para que sea rápido.

;; 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

Además, la pantalla de dired permite sólo 9 espacios, por lo que para archivos muy grandes, la pantalla en dired será llegar en mal estado. Una vez más, eso requería redefinir un fn. En este caso, uno de 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)))))) 

(que simplemente se cambia de 9,0 con un 11,0 y el 8,0, con un 10,0, en las cadenas de formato)

7

En realidad, es que la pantalla casi seguro de Dired+, aunque el texto que lo acompaña da la impresión de que es de Emacs vainilla (XEmacs?), y la atribución de la captura de pantalla es "equipo de desarrollo de Emacs".

Así que sí, la respuesta es que puede obtener esa apariencia fácilmente, usando Dired + y simplemente personalizando las caras predeterminadas: M-x customize-group Dired-Plus.

18

Se me ocurrió el mismo problema y encontré cómo cambiar los swithes sobre la marcha.

Así, mientras que en un búfer Dired

C-u s

ahora se puede cambiar interruptores utilizados por ls. Añadir h pongo un archivo legible por humanos tamaños

Se pueden añadir otros interruptores también, por ejemplo, que lo cambié a -alsh y ahora ordena por tamaño del archivo

+0

¿Cuál es el comando/función asociada con este enlace de clave?'describe-key' se detiene en C-u, por lo que devuelve' universal-argument'. – nephewtom

+0

@nephewtom es 'dired-sort-toggle-or-edit'. Dentro de un búfer directo haga 'C-x k' luego' s'. De hecho, está enviando el argumento universal u a 'dired-sort-toggle-or-edit' –

+0

tenga en cuenta que '-alsh' debe ser '-alSh' para ordenar por tamaño de archivo, el caso es importante – bph

Cuestiones relacionadas