zsh
コマンドに対する完全な提案をどのように行っているかについて、少し不快です。
インストールしていないコマンドの先頭を入力して押すtab
と、インストールされている補完機能が表示されます。
実行したいのですvim
が、インストールされていないと表示され_vim
ます。
これをオフにする方法はありますか?または、セットアップで何か間違ったことをしましたか?
私のすべてのドットファイルはで公開されていgithub.com/henrikbjorn/castle
ます。
zsh
コマンドに対する完全な提案をどのように行っているかについて、少し不快です。
インストールしていないコマンドの先頭を入力して押すtab
と、インストールされている補完機能が表示されます。
実行したいのですvim
が、インストールされていないと表示され_vim
ます。
これをオフにする方法はありますか?または、セットアップで何か間違ったことをしましたか?
私のすべてのドットファイルはで公開されていgithub.com/henrikbjorn/castle
ます。
回答:
デフォルトでは、zshの補完エンジンは、入力したものに何かを追加することのみを試みます。プレフィックスも追加するように設定しました。シンプルなインタラクティブ補完構成エンジン(compinstall
)は、これを「マッチングコントロール→サブストリング補完」で提供します。これはあなたにこのような行を挿入します.zshrc
:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
zstyle
組み込みセット(主に)完了の設定。matcher-list
完成スタイルは、少なくとも一つの一致があるとき、停止、連続してみてくださいする方法の一覧です。空の文字列はデフォルトの補完を意味します(接尾辞のみ)。マッチング制御呪文のl:|=* r:|=*
手段は、前方一致しようとする*
と接尾辞のマッチングを*
任意の接頭辞と接尾辞、すなわち。
で始まる接頭辞を_
すべて禁止することができます。これにより、で始まる単語の補完と_
接頭辞の追加による補完が可能になりますが、接頭辞がで始まるとは限りません_
。
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
これは、コマンド名の補完だけでなく、すべての補完に適用されます。これをコマンド名に制限する方法がわかりません。
で始まるコマンド名をより正確に除外する方法があるはずですが、方法_
がわかりません。最初のスタートはignored-patterns
補完スタイルです。
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
これは、_
; で始まる一致を除外します。ただし、一致するものがなければ、zshは無視ルールなしで再試行します。この利点は、コマンドが最初にアンダースコアで始まっていた場合、この2番目のパスで完了することです。悪い部分は、あなたが持っているそうだとすれば、このように一致するデータが存在しない場合は、とにかくアンダースコアを追加しようとすることのzshであるvi
とview
ではなくvim
、その後を押しTabた後、vi
意志の提供vi
とview
ではなく_vim
、しかし、あなたが入力した場合vim
、その後完了を提供します_vim
。
ignore-patterns
は、一致がない場合でもうまく機能します。それcompleter
が含まれていないことを確認する必要がありました_ignored
。