vicmd 모드로 바인딩하고 싶다고 가정해 보겠습니다 R.redo
이것은 작동합니다.
bindkey -a r redo
이렇게 바꾸면 작동하지 않습니다.
bindkey -a rr redo
나는 성공하지 못한 채 다양한 것을 시도했습니다. 이것이 불가능합니까? emacs 모드에서 키 입력에 시퀀스를 바인딩하는 것이 가능해야 한다는 것을 알고 있지만 vi 모드에서 문자에 대해 동일한 작업을 수행할 수 있습니까?
답변1
R이미 표준 vicmd 모드에 바인딩되어 있습니다 vi-replace-chars
.
R따라서 + Rto redo
with를 정의하면
bindkey -a rr redo
R누르면 Zsh는 두 가지 가능한 작업을 수행할 수 있습니다.
- 명령으로 해석
vi-replace-chars
하거나 - 두 번째 문자를 기다린 후 명령을 해석하세요.
redo
Zsh에서 키보드 명령을 일치시키는 알고리즘은 짧은 명령을 선호하므로 항상 1. 작업을 사용합니다.
RZsh가 이 작업을 수행하는 것을 중지하려면 먼저 다음을 사용하여 바인딩을 제거해야 합니다.
bindkey -a -r r
그런 다음 새 옵션을 추가하세요.
bindkey -a rr redo
vi-replace-chars
그런 다음 추가 할 수도 있습니다.
bindkey -a re vi-replace-chars