zsh が親ディレクトリを補完しないようにする

zsh が親ディレクトリを補完しないようにする

私は grml の zshrc をベースに zsh を使用しています。仕事の一環として、ネットワーク パス (NFS、AFS など) に定期的にアクセスします。

/a/long/network/path/on/the/other/side/of/the/world と入力して TAB を 2 回押すと、zsh が /a/ の下、次に /a/long /a/long/network の下などを検索するため、非常に遅くなります...

同時に、ls /a/long/network/path/on/the/other/side/of/the/world を実行すると、1 秒で戻ります。そのため、zsh に推測をやめるように指示したいと思います。(/usr/src/linuxx/ と入力して Tab キーを押すと、/usr/src/linux/ が目的であることがわかります。これは便利ですが、ネットワーク上はメリットよりもデメリットの方が大きいです)。最後のスラッシュの後の「最後」のみに自動補完を実行したいと思います。

時々、回避策として、ディレクトリに cd してから自動補完を使用します。もっと良い方法があるはずです。

どうすればこれを実現できるでしょうか?

答え1

この種の動作は、スタイル(オプションのあるいくつかの基本機能を除く)。path-completion

デフォルトでは、ファイル名補完はパスのすべてのコンポーネントを調べて、そのコンポーネントの補完があるかどうかを確認します。たとえば、/u/b/zは まで補完できます。このスタイルを明示的に false に設定すると、カーソルの前/usr/bin/zshの までのパスコンポーネントに対してこの動作が抑制されます。/

zstyle ':completion:*' path-completion false

オンにしたい場合がありますaccept-exact-dirs代わりにpath-completion、left をオンにしaccept-exact-dirsてオンにすると、zsh はパスが存在しない場合にのみ、最後のパス コンポーネント以外のパス コンポーネントの補完を試みます。

zstyle ':completion:*' accept-exact-dirs true

関連情報