vi cmd 모드 zsh에서 키 시퀀스를 위젯에 바인딩하는 방법은 무엇입니까?

vi cmd 모드 zsh에서 키 시퀀스를 위젯에 바인딩하는 방법은 무엇입니까?

vicmd 모드로 바인딩하고 싶다고 가정해 보겠습니다 R.redo

이것은 작동합니다.

bindkey -a r redo

이렇게 바꾸면 작동하지 않습니다.

bindkey -a rr redo

나는 성공하지 못한 채 다양한 것을 시도했습니다. 이것이 불가능합니까? emacs 모드에서 키 입력에 시퀀스를 바인딩하는 것이 가능해야 한다는 것을 알고 있지만 vi 모드에서 문자에 대해 동일한 작업을 수행할 수 있습니까?

답변1

R이미 표준 vicmd 모드에 바인딩되어 있습니다 vi-replace-chars.

R따라서 + Rto redowith를 정의하면

bindkey -a rr redo

R누르면 Zsh는 두 가지 가능한 작업을 수행할 수 있습니다.

  1. 명령으로 해석 vi-replace-chars하거나
  2. 두 번째 문자를 기다린 후 명령을 해석하세요.redo

Zsh에서 키보드 명령을 일치시키는 알고리즘은 짧은 명령을 선호하므로 항상 1. 작업을 사용합니다.

RZsh가 이 작업을 수행하는 것을 중지하려면 먼저 다음을 사용하여 바인딩을 제거해야 합니다.

bindkey -a -r r

그런 다음 새 옵션을 추가하세요.

bindkey -a rr redo

vi-replace-chars그런 다음 추가 할 수도 있습니다.

bindkey -a re vi-replace-chars

관련 정보