Wenn ich !
eine *.tar.bz2
Datei in Dired verwende, wird die folgende Eingabeaufforderung angezeigt:
! on WANem_3.0_Beta2.tar.bz2: {3 guesses} [bunzip2 -c * | tar xvf -] -!-
Wie kann ich ähnliche Funktionen für andere Dateitypen hinzufügen?
Wenn ich !
eine *.tar.bz2
Datei in Dired verwende, wird die folgende Eingabeaufforderung angezeigt:
! on WANem_3.0_Beta2.tar.bz2: {3 guesses} [bunzip2 -c * | tar xvf -] -!-
Wie kann ich ähnliche Funktionen für andere Dateitypen hinzufügen?
Antworten:
Diese Funktionalität kommt von dired-x
, nicht von Dired. Verwenden Sie (require 'dired-x)
in Ihrer Init-Datei und passen Sie sie dann an dired-guess-shell-alist-user
.
Wir können jedoch sehen, wo Dired einsteckt 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))))
Nachdem Sie das dired-x
Handbuch gelesen haben (info "dired-x")
, lernen Sie die Variable kennen dired-guess-shell-alist-user
, die Sie anpassen können.
Hier ist ein Beispiel für eine Änderung 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")))
(require 'dired-x)
und anpassen dired-guess-shell-alist-user
. ;-)