Zsh は、バインドされていないキーでコマンドモードを開始します。

Zsh は、バインドされていないキーでコマンドモードを開始します。

私はZshのviモードが好きですbindkey -v。それを防ぐ方法はありますか?

答え1

Alt+を押すと、1端末でをEscape押したときと同じESCと1つの文字シーケンスが送信されます1

ここでvi-cmd-modeウィジェットをオーバーライドして待機中のキー(ESC後数100分の1秒以内に受信した文字で他のものともバインドされたESC開始シーケンスを形成しない文字)があれば、そのキーが削除されウィジェットが$KEYTIMEOUT間違っていることができるあります。

vi-cmd-mode() {
  local isEsc=1 REPLY
  while (( KEYS_QUEUED_COUNT || PENDING )); do
    isEsc=0
    zle read-command
  done
  ((isEsc)) && zle .$WIDGET
}
zle -N vi-cmd-mode
KEYTIMEOUT=10

また、KEYTIMEOUTをデフォルト値の40センチ秒から10センチ秒に下げて、を押してからEscape次のキーを押す前に、0.4秒ではなく0.1秒だけ待つだけです。 +を押すと、Alt端末から0.1秒以内にESCと1を送信できます1

関連情報