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 .