Repasando el inicio de la acción de inserción en el modo vi del shell Z

Repasando el inicio de la acción de inserción en el modo vi del shell Z

¿Es posible configurar el modo vi del shell Z para que la tecla de retroceso pueda eliminar caracteres?antes¿La posición donde se inició la acción de inserción?

Básicamente, el comportamiento de vim que se puede lograr agregando la siguiente línea a~/.vimrc

set backspace=start

– ¿Es posible tener esto en modo vi de shell Z?

Respuesta1

Puede agregar esto a su configuración de zsh:

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

Explicación:

Modo Vies solo un conjunto de mapas de teclas preconfigurados (vinos,vicmd,viopp,visual) que vinculan ciertas claves a ciertos widgets. Algunos de estos widgets están diseñados específicamente para comportarse de forma similar a como lo hace elviel editor lo hace.

En su caso, este es el vi-backward-delete-charwidget que está vinculado de forma predeterminada Backspaceen elvinosmodo, que tiene la característica específica de no eliminar más allá de la posición donde se ingresó al modo de inserción.

A menudo existen versiones ligeramente diferentes de estos widgets, que se comportan más en línea con elemacseditor. En este caso sería el backward-delete-charwidget, que no se limita a la sesión de inserción actual. Aunque por defecto está vinculado enmodo emacs, no existen restricciones estrictas sobre qué widget se puede usar en qué modo. Puedes usar backward-delete-chardentromodo visimplemente volviendo a vincular Backspacepara llamar al widget backward-delete-char.

La razón por la que hay dos enlaces - ^?y ^H- es que depende del terminal cuál de esas dos secuencias de teclas se envía al presionar Backspace. Por defecto, ambos están vinculados al mismo widget enmodo viasí comomodo emacs.

información relacionada