Ya has encontrado zle-keymap-select
cuál se ejecuta cada vez que cambia el modo. Puede usarlo para configurar algún otro indicador visual que no sea el indicador, según lo que su terminal lo admita (y su gusto en la pantalla del indicador de modo, por supuesto).
Hay una capacidad estándar de terminfo para cambiar la forma del cursor. Sin embargo, algunos terminales muestran el mismo cursor en ambos modos. La noción de Xterm de un cursor menos visible es hacer que parpadee (y esto debe habilitarse con el -bc
argumento o cursorBlink
recurso de la línea de comando ).
zle-keymap-select () {
case $KEYMAP in
vicmd) print -rn -- $terminfo[cvvis];; # block cursor
viins|main) print -rn -- $terminfo[cnorm];; # less visible cursor
esac
}
Con algunos terminales, también puede cambiar el color del cursor con print -n '\e]12;pink\a'
(por nombre de color) o print -n '\e]12;#abcdef\a'
(por especificación RGB). Estas secuencias se describen en la documentación de xterm, en el ctlseqs
archivo; Los emuladores de terminal modernos suelen emular xterm, aunque es posible que no admitan todas sus características.
CTRL+C
mientras está en modo vi-command, la solicitud se reiniciará, pero indicará que está en modo comando cuando realmente esté en modo insert.zle-line-init
siempre debe cambiar el indicador al modo de inserción. Por alguna razón,$KEYMAP
no se actualiza correctamente cuando se llama a zle-line-init.