さまざまなファイルタイプにデフォルトのシェルコマンドを追加するにはどうすればよいですか?


7

私が使用している場合!*.tar.bz2のdiredでのファイル、私は次のプロンプトを提示しています:

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

他のファイルタイプに同様の機能を追加するにはどうすればよいですか?



@ abo-aboきちんと!!
Sean Allred、2014年

回答:


7

TL; DR:

この機能はdired-x、Diredではなくから提供されます。(require 'dired-x)initファイルで使用してからカスタマイズしdired-guess-shell-alist-userます。


私たちはDiredがどこに接続するかを見ることができます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))))

dired-xマニュアルを読んだ後、カスタマイズできる(info "dired-x")変数dired-guess-shell-alist-userについて学びます。

これは変更の例です 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
まとめる(require 'dired-x)と、カスタマイズしdired-guess-shell-alist-userます。;-)
ドリュー

@Drew私はそのような短い答えを投稿することについては気分が悪いだろう!XD TLを追加します。DR:)
Sean Allred 14年

私はあなたのより完全な答えの代わりとしてそのコメントをまったく意味しませんでした。
ドリュー

@Drew :)しかし、あなたは良い点を述べます-私の答えから「答え」を得るのは簡単ではありませんでした。筆記の練習が必要です。それが私がここにいる理由の1つです:)
Sean Allred

1
良い。より良いコミュニケーションをしたいということは、あなたがどれだけ人々を助けようとしているのかを示しています。
ドリュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.