私が尋ねる質問は少し具体的であり、Unix Stackexchangeの他のオートコンプリートの質問とは異なるかもしれません。
次のディレクトリがあるとします。
-rw-r--r-- 1 hlin117 staff 1.1K Sep 19 13:05 doc.aux
-rw-r--r-- 1 hlin117 staff 26K Sep 19 13:05 doc.log
-rw-r--r-- 1 hlin117 staff 177K Sep 19 13:05 doc.pdf
-rw-r--r-- 1 hlin117 staff 13K Sep 19 13:01 doc.tex
そうしようとしてもあまり役に立たず、一般的な状況なら私もそうvim doc.pdf
しないだろう。代わりによくする方です。vim doc.log
vim doc.aux
vim doc.tex
残念ながら、tab-autocompleteはただdoc.tex
。
vim \t
これを入力してディレクトリ内の一部のファイルを無視する方法はありますか?
より一般的にcommandを入力してコマンドを入力すると、ディレクトリ内のファイルを無視するX \t
設定を作成できますか?X
注:私はzshを使います。 bashとzshの同様の解決策があるかどうかはわかりません。
答え1
zshで「新しい」完成システムを使用するには(たとえば、システムcompinit
にいる場合.zshrc
)、次のようにします。file-patterns
スタイル。
zstyle ':completion:*:*:vim:*' file-patterns '^*.(aux|log|pdf):source-files' '*:all-files'
完了していない場合、*.(aux|log|pdf)
パターンに一致するファイルのみがコマンドラインで完了します。vim
*
特に、明示的に一致するコマンドを除くすべてのコマンドを一致させるために、コマンド名パターンを使用できます。
答え2
zshを使わずにもっと一般的なオプションがあるので、ここに追加します。
.bashrc
bash組み込みコマンドを使用して1行だけ入力しますcomplete
。たとえば、
complete -f -X '*.@(aux|log|pdf)' -o plusdirs vim
-f
ファイル名を完成させる場所は、-X
glob文字列を使用して可能な選択肢から一致するパターンをフィルタリングします-o plusdirs
。〜の後リストにサブディレクトリを追加します。