Cambiar la forma del cursor en diferentes terminales

Pregunta:

En casa uso iTerm2 en MacOS X, y en el trabajo, tengo una computadora portátil con CygWin. Tengo otra PC en la que uso gnome-terminal o terminator y, a veces, uso tmux.

Estoy buscando configurar la forma del cursor en Vim de una manera que funcione en todos los emuladores de terminales anteriores. Quiero que el cursor sea una barra vertical en el modo de inserción y un bloque sólido en el modo normal.

¿Alguien puede ayudar aquí? Es realmente incómodo cuando la forma del cursor es inconsistente cuando cambio entre todos mis dispositivos.

A continuación se muestra mi vimrc actual para el cambio de forma de cursur, lo obtuve de un ejemplo en línea, pero no funciona en gnome-teriminal, terminator, tmux:

if &term == "^xterm" || &term == "^screen"
    let &t_SI = "\e[5 q"
    let &t_EI = "\e[2 q"
endif

if exists("$TMUX")
    let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\"
    let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\\"
endif

Respuesta:

A partir de noviembre de 2017, todos los terminales que está utilizando admiten las mismas secuencias de escape DECSCUSR para cambiar la forma del cursor 1 . Por lo tanto, no es necesario realizar pruebas para los diferentes terminales.

Como tal, lo único que requiere un tratamiento diferente es tmux, que solo enviará secuencias de escape al terminal cuando esté rodeado por una secuencia DCS. Ya tenía esto, pero en esa rama estaba pasando secuencias de escape que solo funcionarían en iTerm 2 .

Por lo tanto:

if exists('$TMUX')
  let &t_SI = "\ePtmux;\e\e[5 q\e\\"
  let &t_EI = "\ePtmux;\e\e[2 q\e\\"
else
  let &t_SI = "\e[5 q"
  let &t_EI = "\e[2 q"
endif

1: NB Por "Terminator" supongo que se está refiriendo a GNOME Terminator y no al terminal basado en Java. Cygwin no es una terminal: su terminal predeterminada, mintty emula xterm y, por lo tanto, debería admitir esto. Las versiones anteriores de iTerm no eran compatibles con DECSCUSR, pero las versiones posteriores sí. El terminal GNOME también agregó soporte más recientemente.
2: Y Konsole (y posiblemente otros), pero ese no es uno de los terminales que ha dicho que usa.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım