私は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。