나는 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.