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

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

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

이것은 작동합니다.

bindkey -a r redo

이걸로 바꾸면 안되네요.

bindkey -a rr redo

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

답변1

표준 vicmd 모드에서는 R이미 vi-replace-chars.

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

bindkey -a rr redo

R를 눌렀을 때 Zsh가 따를 수 있는 두 가지 가능한 작업이 있습니다.

  1. 명령으로 해석 vi-replace-chars하거나
  2. 두 번째 문자를 기다린 다음 명령을 해석하십시오.redo

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

Zsh가 이 작업을 수행하는 것을 중지하려면 먼저 바인딩을 제거해야 합니다 R.

bindkey -a -r r

그런 다음 새 옵션을 추가하십시오.

bindkey -a rr redo

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

bindkey -a re vi-replace-chars

관련 정보