私は 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