Bash()で\bash --noprofile --norc
カラット/リターン/カーソル(|
)が単語()の中央にある場合、タブをダブルクリックすると、キャレット()の前の単語の提案がl|!@#asdf
表示されます(この例では)。しかし、zsh()ではまったく機能しません。キャレット()の前の単語を自動補完するには、キャレットの後にスペースが必要です。ls
l
\zsh -f
l| !@#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-install
zsh
~/.zshrc
_prefix
そこで完成機を有効にする必要があります。set -o completeinword
まだ完了していないので、手動で追加する必要がありますcompinstall
。実際には1つあります:
# TODO: _prefix completer should make sure completeinword is set.
この関数の行compinstall
。
バラよりinfo zsh _prefix
もっと学ぶ。