zsh
のファイルとディレクトリの大文字と小文字を区別しないファジー補完が必要です。マニュアルを数時間読んだ後、これは私が思いついたものです:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
さらに、可能な補完を表示するためにTAB
を1回押し、補完が1つしかない場合は入力した内容のみを変更します。次にTAB
をもう一度押すと、「メニュー完了」モードになります。マニュアルに基づいて、私はこれを思いつきました:
zstyle ':completion:*' menu select
これで、1つの状況を除いて、すべてが正常に機能します。ホームディレクトリにDesktop
と.rstudio-desktop
の2つのフォルダーがあります。私はsetopt globdots
を持っているので、次のように入力すると思います。
$ cd ~/dktop<TAB>
コマンドを入力したままにし、補完候補Desktop
および.rstudio-desktop
として表示します。代わりに、それはremovesdktop
となり、次のようになります。
$ cd ~/
関連するすべてのマニュアル、ガイド、Stack Exchangeの質問、およびその他のさまざまなソースを確認しました。しかし、私が何をしても、私はこの仕事をすることができません。
しかし、興味深いことに、私がinで、次のように入力すると、すべてが期待どおりに機能します。
$ cd dktop<TAB>
つまり、それはパスの先頭以外のセグメントに関する問題のみです(そして、これは、使用されているC-x h
タグではなくdirectories
タグに対応していることをlocal-directories
で確認できます)。
簡単に再現できるように、 here は上記の状況と動作を再現する~/.zshrc
です(Homebrewのzsh
を使用して新しいEl Capitan仮想マシンでテスト済み)。
可能な解決策の1つは、次のことです。
bindkey "^I" expand-Word
これにより、タブが展開されます~/
を絶対パスに。