ZSH+gnome-terminal y modo de entrada VI: muestra ibeam o bloquea el cursor

ZSH+gnome-terminal y modo de entrada VI: muestra ibeam o bloquea el cursor

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 $KEYMAPparámetro directamente con una if..ficláusula y ejecuto el gconftool-2comando 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 qo \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.

información relacionada