私は vim の Command-T プラグインを使い始めたばかりですが、これはすごいです。聞いたことがない方のために説明すると、次のような入力が可能になります。
Sb
リストからSomething.hs-bootを選択する
src/project/Control/Whatever/Foobs.hs
src/project/Control/Whatever/Something.hs-boot
src/project/Control/Whatever/Something.hs
等々。
zshでも同様の自動補完スタイルが使えるかと思っています。シェル補完は文字を入力するたびにシステム全体を検索すべきではないため、vim補完ほど広範囲には使えないのは理解していますが、少なくとも次のように入力できるような類似の補完はありますか?
s/p/c/w/Sb<tab>
上記と同様の効果が得られますか?
zsh には非常によくプログラム可能なオートコンプリート機能があると聞いていますが、私のシェル スキルはかなり弱いです。
これを設定する方法を知っている人はいますか?
答え1
部分的なパスを補完するには、補完システムを初期化するだけで十分です (少なくとも私のシステムでは、 を使用していますzsh v4.3.17
)。
autoload -U compinit && compinit
zmodload zsh/complist
もう少し凝ったことをしたい場合は、大文字と小文字を区別せずに一致させることもできます。
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
アップデート1:
Command-Tスタイルの自動補完ができるかは分かりませんが、zshは全て何かを表示する前に一致するかどうかを調べる必要があるため、特にサブディレクトリやファイルが多数ある場所では、これをオンザフライで実行するのは現実的ではない可能性があります。
ただし、次の方法も使用できます。
**/*thing <Tab>
**
現在のディレクトリのすべてのファイルとサブディレクトリに一致します。
アイデア: 最新のファイルリストである必要がない場合は、出力locate
(つまり、事前に計算されたファイルリスト)を使用する補完関数を記述することもできます。
答え2
もう一つの興味深い代替案は、次のようなものを使うことです。ファスド。