単語の始まりでのみ完成

単語の始まりでのみ完成

ZSHオートコンプリートに問題があり、それを解決するための正しいキーストロークが見つかりません。

たとえば、次のようなファイルの場合

$ ls
Accelion, titi toto tata

私は書きたい:

$ ls cc<TAB>

そして得る_いいえ_completionの代わりにAccelion

現在設定されているオプションは次のとおりです。

$ set -o | grep " on"
alwaystoend           on
autocd                on
autonamedirs          on
autopushd             on
nobeep                on
cdablevars            on
extendedhistory       on
noflowcontrol         on
nohistbeep            on
histexpiredupsfirst   on
histignoredups        on
histignorespace       on
histverify            on
incappendhistory      on
interactive           on
interactivecomments   on
nolistambiguous       on
nolistbeep            on
longlistjobs          on
nonomatch             on
promptsubst           on
pushdignoredups       on
shinstdin             on

zleオプション(およびダンプ方法)などの追加情報が必要な場合はお知らせください。

編集する:扱いにくい4.3.17(x86_64-redhat-linux-gnu)

ベストアンサー1

zshどのバージョンを使用しているか言及していません。バージョン4を想定しています。

シェルzshは、おなじみの実際の完了ではなく、一致を最初に実行します。この動作は、完成者をソートし、オプションでカスタマイズすることでカスタマイズできます。これを行う方法の詳細については、以下を参照してください。このガイド

見ている動作は、おそらく大文字と小文字を区別しない一致です。

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

ガイドを深く掘り下げることなくこの動作を修正する最速の方法は、上記のような行を見つけてコメントアウトするか、autoload -Uz compinstallthenを実行することですcompinstall。これにより、デフォルトウィザードを使用してzsh機能をカスタマイズできます。いくつかの質問をした~/.zshrc後、オプションに慣れたら、カスタマイズできる簡単な質問を作成します。~/.zshrc特定の行動を維持したい場合は、参照できるように最初に行動のコピーを作成してください。

おすすめ記事