単語の先頭部分のみ補完する

単語の先頭部分のみ補完する

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 compinstallから を実行することですcompinstall。これにより、 の動作をカスタマイズするための基本的なウィザードが案内されます。いくつかの質問が表示され、オプションに慣れてきたらカスタマイズできるzshシンプルな が作成されます。保持したい動作がある場合に参照できるように、まず をコピーしてください。~/.zshrc~/.zshrc

関連情報