Percorrer o início da ação de inserção no modo vi do shell Z

5

É possível configurar o modo vi do shell Z para que o backspace possa excluir caracteres antes da posição em que a ação de inserção foi iniciada?

Basicamente, o comportamento do vim que pode ser alcançado adicionando a seguinte linha a ~/.vimrc

set backspace=start

- é possível ter isso no modo vi do shell Z?

    
por wolf-revo-cats 31.05.2017 / 04:56

1 resposta

7

Você pode adicionar isso à sua configuração do zsh:

bindkey -M viins '^?' backward-delete-char
bindkey -M viins '^H' backward-delete-char

Explicação:

Vi-mode é apenas um conjunto de mapas de teclas pré-configurados ( viins , vicmd , viopp , visual ) que ligam certas teclas a certos widgets. Alguns desses widgets são projetados especificamente para se comportarem da mesma maneira que o editor vi faz.

No seu caso, este é o widget vi-backward-delete-char , que por padrão está vinculado a Backspace no modo viins , que tem o recurso específico para não excluir a posição anterior onde o modo de inserção foi inserido.

Freqüentemente existem diferentes versões desses widgtly, que se comportam mais de acordo com o editor emacs . Nesse caso, seria o widget backward-delete-char , que não está limitado à sessão de inserção atual. Embora seja por padrão limitado em emacs-mode , não há restrições rígidas sobre qual widget pode ser usado em qual modo. Você pode usar backward-delete-char dentro do modo-vi simplesmente rebinding Backspace para chamar o widget backward-delete-char .

O motivo de haver duas ligações - ^? e ^H - é que depende do terminal, em que essas duas seqüências de teclas são enviadas pressionando Backspace . Por padrão, ambos estão ligados ao mesmo widget em modo-vi , bem como emacs-mode .

    
por 01.06.2017 / 15:00

Tags