Bash e / ou Zsh: É possível personalizar o modo de inserção Vi para criar uma ligação que move um número específico de caracteres?

1

Eu tenho uma configuração do Vim que é pouco convencional. Eu ligo Shift + H e Shift + L para mover para a esquerda por 7 caracteres e mover para a direita por 7 caracteres, respectivamente. Isso torna mais fácil para o meu cérebro para o tempo de repetição do teclado para posicionar rapidamente o cursor onde eu quero ir o mais rápido possível.

De qualquer forma, estou curioso para saber se o mapeamento de uma única chave para tal ação (mover sete caracteres) é possível, e provavelmente precisaria fazer o patch da própria shell. Mas, talvez o sistema de ligação de chaves possa permitir isso?

Não acredito que fazer conversão ou mapeamento em qualquer outro nível (como o emulador de terminal) faça sentido, já que eu preciso que o próprio terminal continue enviando os caracteres H e L usuais.

    
por Steven Lu 17.07.2017 / 22:47

1 resposta

2

CURSOR de acordo com o zshzle(1) docs indica que isso pode ser movido no ZSH:

rm ~/.zcompdump
bindkey -v
autoload -U compinit
compinit
function leftsevent {
    CURSOR=$(( CURSOR - 7 ))
}
function rightsaidfred {
    CURSOR=$(( CURSOR + 7 ))
}
zle -N leftsevent
zle -N rightsaidfred
bindkey H leftsevent
bindkey L rightsaidfred

(Não parece haver necessidade de uma única linha de entrada para usar a verificação de limites para < 0 ou > $#BUFFER , mas isso pode ser uma boa coisa a ser feita ...)

    
por 17.07.2017 / 23:09