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

2

Digamos que eu queira vincular R a redo no modo vicmd.

Isso funciona.

bindkey -a r redo

Se eu mudar 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 ligar sequências a teclas no modo emacs, mas você pode fazer o mesmo com letras no modo vi?

    
por noctuid 29.03.2014 / 09:02

1 resposta

1

No modo vicmd padrão R já está vinculado a vi-replace-chars .

Então, quando você define R + R para redo com

bindkey -a rr redo

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

  1. interprete como o comando vi-replace-chars ou
  2. aguarde um segundo caractere e interprete o comando redo

O algoritmo para combinar os comandos do teclado no Zsh favorece os comandos curtos para que ele sempre use a ação 1..

Para impedir que Zsh faça isso, primeiro você precisa remover a ligação para R com

bindkey -a -r r

e adicione sua nova opção com

bindkey -a rr redo

Você também pode adicionar vi-replace-chars com

bindkey -a re vi-replace-chars
    
por 29.03.2014 / 10:37