Làm cách nào để thêm các lệnh shell mặc định cho các loại tệp khác nhau?


7

Khi tôi sử dụng !trên một *.tar.bz2tệp trong Dired, tôi được trình bày với lời nhắc sau:

! on WANem_3.0_Beta2.tar.bz2: {3 guesses} [bunzip2 -c * | tar xvf -] -!-

Làm cách nào để thêm chức năng tương tự cho các loại tệp khác?



@ abo-abo gọn gàng !!
Sean Allred

Câu trả lời:


7

TL; DR:

Chức năng này đến từ dired-x, không phải Dired. Sử dụng (require 'dired-x)trong tập tin init của bạn và sau đó tùy chỉnh dired-guess-shell-alist-user.


Chúng ta có thể thấy mặc dù Dired cắm vào dired-x:

(defun dired-read-shell-command (prompt arg files)
  "Read a dired shell command.
PROMPT should be a format string with one \"%s\" format sequence,
which is replaced by the value returned by `dired-mark-prompt',
with ARG and FILES as its arguments.  FILES should be a list of
file names.  The result is used as the prompt.

This normally reads using `read-shell-command', but if the
`dired-x' package is loaded, use `dired-guess-shell-command' to
offer a smarter default choice of shell command."
  (minibuffer-with-setup-hook
      (lambda ()
    (set (make-local-variable 'minibuffer-default-add-function)
         'minibuffer-default-add-dired-shell-commands))
    (setq prompt (format prompt (dired-mark-prompt arg files)))
    (if (functionp 'dired-guess-shell-command) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<
    (dired-mark-pop-up nil 'shell files
               'dired-guess-shell-command prompt files)
      (dired-mark-pop-up nil 'shell files
             'read-shell-command prompt nil nil))))

Sau khi đọc dired-xhướng dẫn (info "dired-x"), bạn tìm hiểu về biến dired-guess-shell-alist-usermà bạn có thể tùy chỉnh.

Dưới đây là một ví dụ về việc thay đổi dired-guess-shell-alist-user

(setq dired-guess-shell-alist-user
      '(("\\.e?ps$" "gv" "xloadimage" "lpr")
        ("\\.chm$" "xchm")
        ("\\.rar$" "unrar x")
        ("\\.e?ps\\.g?z$" "gunzip -qc * | gv -")
        ("\\.pdf$" "zathura")
        ("\\.flv$" "mplayer")
        ("\\.mov$" "mplayer")
        ("\\.3gp$" "mplayer")
        ("\\.png$" "feh")
        ("\\.jpg$" "feh")
        ("\\.JPG$" "feh")
        ("\\.avi$" "mplayer")))

2
Tóm lại: (require 'dired-x)và tùy chỉnh dired-guess-shell-alist-user. ;-)
vẽ

@Drew Tôi cảm thấy tồi tệ khi đăng một câu trả lời ngắn như vậy! XD Tôi sẽ thêm TL; DR :)
Sean Allred

Tôi hoàn toàn không có ý kiến ​​rằng bình luận thay thế cho câu trả lời đầy đủ hơn của bạn.
vẽ

@Drew :) Nhưng bạn đã đưa ra một quan điểm tốt - thật không đơn giản để có được "câu trả lời" từ câu trả lời của tôi. Tôi cần một số thực hành viết của tôi; đó là một trong những lý do tôi ở đây :)
Sean Allred

1
Tốt Muốn giao tiếp tốt hơn cho thấy bạn đang cố gắng giúp đỡ mọi người như thế nào.
vẽ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.