ファイルの名前に基づき、Diredはそのファイルにどのようなシェルコマンドを適用したいかを推測しようとします。例えば、foo.tarという名前のファイルにポイントを置いて!を押すと、Diredは‘tar xvf’を実行したいのだと推測し、それをデフォルトのシェルコマンドとして提案します。
M-n と入力すると、デフォルトのコマンドが編集用のミニバッファに表示されます。特定のファイルに対して複数のコマンドがある場合は、M-n を数回入力することで、一致する各コマンドを順に表示できます。
Diredは単一のファイルに対するコマンドを推測しようとするのみで、マークされたファイルの一覧に対しては決して行いません。
この変数は、特定のファイルに適したシェルコマンドを推測するための事前定義済みルールを指定します。推測機能を無効にするには、これを nil に設定してください。dired-guess-shell-alist-user
の要素(ユーザー定義)は、これらのルールよりも優先されます。
この変数は dired-guess-shell-alist-default
と同様ですが、さまざまなメディア形式向けの外部ビューアやプレーヤーが含まれています。これを nil
に設定すると、推測機能が無効になります。変数 dired-guess-shell-alist-user および dired-guess-shell-alist-default は、これらのルールを上書きします。
nil
以外の場合、この変数はファイル正規表現とその推奨コマンドからなるユーザー定義のalistを指定します。dired-do-shell-command が実行される際、これらのルールは変数 dired-guess-shell-alist-default および dired-guess-shell-alist-optional
に定義済みのルールよりも優先されます。デフォルトは nil です。
alistの各要素は次のようになっています。
(regexp command...)
ここで、各 command は文字列、または文字列として評価される Lisp 式のいずれかとなります。複数のコマンドが指定された場合、それらはすべて一時的に履歴にプッシュされます。
シェルコマンド内の ‘*’ は、regexp に一致したファイル名を表します。Emacs が command を呼び出す際、‘*’ の各出現箇所を、一致したファイル名に置き換えます。
ファイル拡張子「.foo」および「.bar」のルールを追加するには、Initファイルに以下を追記してください:
(setq dired-guess-shell-alist-user
(list
(list "\\.foo$" "foo-command") ; fixed rule
;; possibly more rules...
(list "\\.bar$" ; rule with condition test
'(if condition
"bar-command-1"
"bar-command-2"))))
これにより、同一の拡張子に対する既定のルールはすべて上書きされます。
M-x customize-group RET dired-guess RET を使用すると、さらに多くのユーザーオプションを利用できます。