
Existen diferentes métodospara mostrar si está en inserción o normal cuando usa la combinación de teclas VI en ZSH.
Gnome-terminal tambiénte permite cambiar el cursorde bloque █
a ibeam |
con una llamada a gconftool-2
.
¿Cómo puedo combinar estos dos para tener un ibeam en modo de inserción y un bloque en modo normal?
Respuesta1
Poniendo ambas respuestas proporcionadas en la pregunta.[1,2] juntos, termino con esto:
function zle-line-init zle-keymap-select {
if [[ $KEYMAP == vicmd ]]; then
gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block
elif [[ $KEYMAP == (main|viins) ]]; then
gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam
fi
}
zle -N zle-line-init
zle -N zle-keymap-select
La diferencia es que verifico el $KEYMAP
parámetro directamente con una if..fi
cláusula y ejecuto el gconftool-2
comando en lugar de alterar el mensaje.
Respuesta2
En versiones recientes de gnome-terminal, puedes usar las siguientes secuencias de escape para cambiar el cursor:
\e[0 q
o\e[ q
: restablecer lo que esté definido en la configuración del perfil\e[1 q
: bloque parpadeante\e[2 q
: bloque estable\e[3 q
: subrayado parpadeante\e[4 q
: subrayado constante\e[5 q
: haz I parpadeante\e[6 q
: haz I estable
Puede imprimirlos, por ejemplo echo -ne '\e[5 q'
. Conéctelos a su configuración de zsh como se muestra en la respuesta de mpy.