これは効果があります
通常、zsh
タップの完成はうまく機能します。
$ touch foo-1-bar foo-2-bar
$ touch f<Tab>
$ touch foo--bar
^ cursor here
もう一度押すと、Tabファイルを選択できるメニューが表示されます。
$ touch foo--bar
foo-1-bar foo-2-bar
これはない
しかし、これは始まりと終わりが一致する文字列には機能しないようです。たとえば、
touch foo-bar foo-foo-bar
touch f<Tab>
touch foo-bar
^ cursor here. <tab> again.
touch foo-bar
^ cursor here.
メニューは表示されず、選択する機会もありませんfoo-foo-bar
。これは予想される動作ですか、それともバグですか?後者の場合でもメニューが表示されるようにする設定はありますか?
私はそれを使用していますoh-my-zsh
。完了関連行をすべて削除しようとしましたが、~/.zshrc
違いはありませんでした。
答え1
コメントに基づいて無効にしようとしましたが、oh-my-zsh
問題は解決しました。その後、oh-my-zsh
ソースコードに移動し、オプションでモジュールを無効にしました。
私は以前これを持っていましたが、CASE_SENSITIVE="true"
この行をコメントアウトすると問題が解決しました。明らかにこれ既知のエラー。
~/.zshrc
この問題を解決するには、ソースの後に次の行を追加するだけですoh-my-zsh
。
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
答え2
個人的には私はこの解決策を好みます。http://zsh.sourceforge.net/FAQ/zshfaq04.html#l50、これはtcshの完成と同様に機能し、カーソルの前の単語だけを完成します。
ただ使用
bindkey '\CI' expand-or-complete-prefix
変える
bindkey '\CI' expand-or-complete
(基本的に)。
答え3
別のオプションは、1ページに記載されているようにCOMPLETE_IN_WORDを設定することです。http://zsh.sourceforge.net/FAQ/zshfaq04.html#l50。
setopt complete_in_word
これにより、カーソル位置の単語が埋められ、カーソルポイントの後ろのすべての文字が塗りつぶされた内容に置き換えられます。