2010-05-18 22 views
15

Tôi vừa xem qua số này dired mode screen tại Wikipedia. Tôi đang xem xét các tùy chỉnh đó.Tùy chỉnh dired

Về màu sắc, tôi đoán chỉ cần chỉ định khuôn mặt chính xác sẽ làm, nhưng làm thế nào để tôi được chỉ dẫn để hiển thị tệp có kích thước bằng kbytes theo mặc định? Và không gian có sẵn trong MB (dòng trên cùng)?

Trả lời

13

Để có được kích thước file trong Kbytes, bạn có thể tùy biến dired-listing-switches sử dụng tùy chọn -k:

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

Bạn phải làm một công việc ít hơn để có được tổng số/số có sẵn trong MB. Điều này làm việc trên hệ thống Linux của tôi, nhưng phần có sẵn không hoạt động trên Windows hộp của tôi:

(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

Trên Linux, hãy thử "-alh". – huaiyuan

+0

Tks cho câu trả lời. Phần có sẵn không thành công trên bò (tôi sẽ xem xét nó sau này). –

+1

@huaiyuan Tùy chọn 'h' có thể đọc được ở người, nó không sử dụng kích thước không đổi (như yêu cầu). Tôi thích 'h' nói chung tho. –

4

Bạn không hỏi, nhưng tôi nghĩ rằng tôi muốn thêm ....

tôi muốn có thể dễ dàng sắp xếp đầu ra được truyền theo kích thước và phần mở rộng, cũng như tên và thời gian. Tôi biết tôi có thể làm điều này với M-x universal-argument dired-sort-toggle-or-edit, nhưng tôi muốn nó có sẵn trên phím s để làm cho nó nhanh chóng.

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

Ngoài ra, màn hình hiển thị trong dired chỉ cho phép 9 khoảng trống, vì vậy đối với các tệp rất lớn, màn hình hiển thị trong dired sẽ bị rối tung lên. Một lần nữa, yêu cầu xác định lại một fn. Trong trường hợp này, một từ 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)))))) 

(nó chỉ thay thế 9.0 với 11,0 và 8,0 với 10,0, trong chuỗi định dạng)

7

Trên thực tế, ảnh chụp màn hình đó là gần như chắc chắn của Dired+, mặc dù văn bản đi kèm cho ấn tượng rằng đó là từ vanilla Emacs (XEmacs?) và phân bổ cho ảnh chụp màn hình là "Nhóm phát triển Emacs". Vì vậy, có, câu trả lời là bạn có thể dễ dàng có được vẻ ngoài đó, bằng cách sử dụng Dired + và chỉ cần tùy chỉnh khuôn mặt mặc định: M-x customize-group Dired-Plus.

18

Tôi đã đưa ra cùng một vấn đề và tìm cách thay đổi swithes khi đang bay.

Vì vậy, trong khi trong một bộ đệm dired

C-u s

bây giờ bạn có thể thay đổi công tắc được sử dụng bởi ls. Thêm h làm được một tập tin có thể đọc được con người kích thước

Bạn có thể thêm công tắc khác nữa, ví dụ tôi đã thay đổi nó để -alsh và bây giờ sắp xếp bởi kích thước tập tin

+0

Lệnh/chức năng liên kết với khóa ràng buộc này là gì?'description-key' dừng tại C-u, vì vậy nó trả về' universal-arguments'. – nephewtom

+0

@nephewtom nó là 'dired-sort-toggle-or-edit'. Bên trong một bộ đệm dired làm 'C-x k' rồi' s'. Bạn đang thực sự gửi đối số chung u sang 'dired-sort-toggle-or-edit' –

+0

lưu ý rằng '-alsh' nên là '-alSh' để sắp xếp theo các tệp, trường hợp này quan trọng – bph