Bashと同様に、単語の途中でタブオートコンプリートを使用するように(カーソルの後ろの文字を無視する)zshを設定します。

Bashと同様に、単語の途中でタブオートコンプリートを使用するように(カーソルの後ろの文字を無視する)zshを設定します。

Bash()で\bash --noprofile --norcカラット/リターン/カーソル(|)が単語()の中央にある場合、タブをダブルクリックすると、キャレット()の前の単語の提案がl|!@#asdf表示されます(この例では)。しかし、zsh()ではまったく機能しません。キャレット()の前の単語を自動補完するには、キャレットの後にスペースが必要です。lsl\zsh -fl| !@#asdf

これはbashがよりよくするいくつかのことの1つです。 zshにこれを有効にする設定があるかどうか教えてもらえますか?

答え1

これに関連して、bashの完了動作に近いのは、expand-or-complete-prefixデフォルト値の代わりにウィジェットを使用することですexpand-or-complete(または完成器がアクティブなcomplete-word場合)。_expand

bindkey '^I' expand-or-complete-prefix

_prefixそうでないと、現在の単語を完成させることはできませんが、カーソルの左側の部分が完成できる場合は、デフォルトの完成器を設定できます。

少なくとも以下を追加してください。

zstyle ':completion:*' completer _complete _prefix
set -o completeinword

今後

autoload -Uz compinit
compinit

あなたの~/.zshrc

最も簡単な方法は、compinstall必要に応じて仕上げを調整することです。持つただzshが実行するすべての強力な機能の恩恵を受けることができないのは無駄です。ランニング:

autoload compinstall
compinstall

実行は、なしの最初の呼び出しcompinstallでオプションとして使用することもできます。zsh-newuser-installzsh~/.zshrc

_prefixそこで完成機を有効にする必要があります。set -o completeinwordまだ完了していないので、手動で追加する必要がありますcompinstall。実際には1つあります:

# TODO: _prefix completer should make sure completeinword is set.

この関数の行compinstall

バラよりinfo zsh _prefixもっと学ぶ。

関連情報