Next: , Previous: , Up: Dired (ディレクトリーエディター)   [Contents][Index]


31.9 シェルコマンドの推測

Diredはファイルの名前にもとづいて、そのファイルに適用したいシェルコマンドの推測を試みます。たとえばfoo.tarという名前のファイルにポイントがあるときに!を押下すると、Diredは‘tar xvf’を実行したいのだろうと推測して、それをデフォルトのシェルコマンドとして提案します。

M-nをタイプすれば、編集用にそのデフォルトをミニバッファーに取り込むことができます。与えられたファイルにたいして複数のコマンドが存在する場合には、M-nを何回かタイプすることによってマッチするコマンドを順繰りに確認することができます。

Diredが推測を試みるコマンドは単一のファイルにたいしてであり、マークされたファイルのリストに推測を試みることはありません。

Variable: dired-guess-shell-alist-default

この変数は特定のファイルにたいして適切なシェルコマンドを推測するための、事前定義されたルールを指定します。これをnilにセットすると推測は行いません。これらのルールはdired-guess-shell-alist-userの要素(ユーザーが定義)によってオーバーライドされます。

Variable: dired-guess-shell-alist-user

この変数が非nilなら、ファイルのregexpとそれらにたいする推奨コマンドからなるユーザー定義のalistを指定します。これらのルールはdired-do-shell-commandの実行時において変数dired-guess-shell-alist-defaultに事前定義されたルールより優先されます。デフォルトはnilです。

alistの要素はそれぞれ以下のような形式です

(regexp command…)

ここでcommandは文字列、あるいは文字列に評価されるLisp式です。コマンドが複数与えられた場合には、一時的にそれらのコマンドすべてがヒストリーに追加されます。

シェルコマンド内の‘*’は、regexpにマッチしたファイルの名前を意味します。Emacsがcommandを呼び出す際に、‘*’はそれぞれマッチしたファイル名によって置き換えられます。

.foo’および‘.bar’というファイル拡張子にたいするルールを追加するには、以下をinitファイルに追加してください:

(setq dired-guess-shell-alist-user
      (list
       (list "\\.foo$" "foo-command")  ; 固定ルール
       ;; possibly more rules...
       (list "\\.bar$"  ; 条件テスト付きルール
             '(if condition
                  "bar-command-1"
                "bar-command-2"))))

同じ拡張子にたいする事前定義されたルールは、すべて上記ルールによって置き換えられます。

他にもM-x customize-group RET dired-guess RETで他のユーザーオプションを確認することができます。