2010-05-18 13 views
15

Ich bin gerade auf diese dired mode screen bei Wikipedia gestoßen. Ich schaue mir diese Anpassungen an.Anpassen dired

In Bezug auf Farben, ich denke, nur die Angabe der richtigen Gesichter tun, aber wie bekomme ich dired zeigen Dateigröße in kbytes standardmäßig? Und der verfügbare Platz in MBs (oberste Zeile)?

Antwort

13

die Dateigrößen in Kilobyte zu erhalten, können Sie die Variable dired-listing-switches anpassen, um die -k Option verwenden:

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

Sie haben ein wenig mehr Arbeit zu tun, um die Gesamt/verfügbaren Zahlen in MB zu erhalten. Das funktionierte auf meinem Linux-System, aber der verfügbare Teil fehlgeschlagen auf meinem Windows-Rechner arbeiten:

(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

Unter Linux versuchen „-alh“. – huaiyuan

+0

Tks für die Antwort. Der verfügbare Teil scheitert auch bei Ochsen (ich werde später darauf eingehen). –

+1

@huaiyuan Die Option 'h' ist lesbar, sie verwendet keine konstante Größe (wie die Anfrage). Ich mag "h" im Allgemeinen tho. –

4

Sie nicht fragen, aber ich dachte, ich würde hinzufügen ....

Ich wollte in der Lage sein, die Dired-Ausgabe einfach nach Größe und Erweiterung sowie nach Name und Uhrzeit zu sortieren. Ich weiß, dass ich das mit M-x universal-argument dired-sort-toggle-or-edit tun kann, aber ich wollte, dass es auf dem s Schlüssel verfügbar ist, um es schnell zu machen.

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

Auch ermöglicht die Anzeige in dired nur 9 Räume, so dass für sehr große Dateien, wird die Anzeige in dired durcheinander bekommen. Dies erforderte erneut eine Neudefinition eines Fn. In diesem Fall wird man von 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)))))) 

(es ersetzt nur die 9.0 mit einem 11,0, und die mit einem 8,0 10,0 im Format strings)

7

Eigentlich ist, dass Bildschirm fast sicher von Dired+, obwohl der begleitende Text den Eindruck gibt, dass es von Vanille Emacs (XEmacs?) ist, und die Zuschreibung für den Screenshot ist "Emacs Entwicklungsteam".

Also ja, die Antwort ist, dass Sie dieses Aussehen leicht erhalten können, indem Sie Dired + verwenden und einfach die Standardgesichter anpassen: M-x customize-group Dired-Plus.

18

Ich kam mit dem gleichen Problem und fand, wie man Switches im laufenden Betrieb ändert.

Während also in einem dired Puffer

C-u s

Sie können nun Schalter von ls ändern. In h do eine für Menschen lesbare Datei erhalten Größen

Sie können auch andere Schalter hinzufügen, zum Beispiel habe ich es zu -alsh und es sortiert nun nach Dateigröße

+0

Was ist der Befehl/die Funktion, die mit dieser Tastenanbindung verbunden ist?'describe-key' stoppt bei C-u und gibt 'universal-argument' zurück. – nephewtom

+0

@nephewtom es ist 'dired-sort-toggle-or-edit'. Innerhalb eines dired-Puffers "C-x k" dann "s". Sie senden tatsächlich das universelle Argument u an "dired-sort-toggle-or-edit" –

+0

Beachten Sie, dass '-alsh' '-alSh' sein sollte, um nach Dateigröße zu sortieren, der Fall ist wichtig – bph