Como vincular uma sequência de teclas a um widget no modo vi cmd zsh?

Como vincular uma sequência de teclas a um widget no modo vi cmd zsh?

Digamos que eu queira vincular Rno redomodo vicmd.

Isso funciona.

bindkey -a r redo

Se eu mudar para isso, não funciona.

bindkey -a rr redo

Eu tentei coisas diferentes sem sucesso. Isso não é possível? Eu sei que deveria ser possível vincular sequências a teclas no modo emacs, mas você pode fazer o mesmo com letras no modo vi?

Responder1

No modo vicmd padrão Rjá está vinculado ao vi-replace-chars.

Então, quando você define R+ Rpara redocom

bindkey -a rr redo

você tem duas ações possíveis que o Zsh pode seguir quando Ré pressionado

  1. interprete-o como o comando vi-replace-charsou
  2. espere por um segundo caractere e então interprete o comandoredo

O algoritmo para combinar comandos de teclado no Zsh favorece comandos curtos, portanto sempre usará a ação 1..

Para impedir que o Zsh faça isso, primeiro você precisa remover a ligação de Rwith

bindkey -a -r r

e adicione sua nova opção com

bindkey -a rr redo

Você também pode adicionar vi-replace-charscom

bindkey -a re vi-replace-chars

informação relacionada