¿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-char
widget 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-char
widget, 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-char
dentromodo 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.