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

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

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

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

set backspace=start

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

Responder1

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

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

Explicação:

Modo Vié apenas um conjunto de mapas de teclado pré-configurados (viins,vítima,viopp,visual) que vinculam determinadas chaves a determinados widgets. Alguns desses widgets são projetados especificamente para se comportarem de maneira semelhante à forma como ovieditor faz.

No seu caso, este é o vi-backward-delete-charwidget que está vinculado por padrão Backspacenoviinsmodo, que possui o recurso específico de não excluir além da posição onde o modo de inserção foi inserido.

Muitas vezes existem versões ligeiramente diferentes desses widgets, que se comportam mais de acordo com oemacseditor. Neste caso seria o backward-delete-charwidget, que não está limitado à sessão de inserção atual. Embora seja por padrão vinculado emmodo emacs, não há restrições rígidas sobre qual widget pode ser usado e em qual modo. Você pode usar backward-delete-chardentromodo visimplesmente religando Backspacepara chamar o widget backward-delete-char.

A razão de haver duas ligações - ^?e ^H- é que depende do terminal, qual dessas duas sequências de teclas é enviada ao pressionar Backspace. Por padrão, ambos estão vinculados ao mesmo widget emmodo viassim comomodo emacs.

informação relacionada