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.

관련 정보