Forma del cursor debajo de vim + tmux

Pregunta:

¿Cómo puedo tener diferentes formas de cursor al ejecutar vim dentro de tmux bajo cygwin?

SIN tmux estas líneas serían suficientes para lograr lo que quiero:

let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"

Pero de alguna manera mi tmux lo rompe: el cursor tiene forma de bloque sin importar en qué modo vim esté.

Mis especificaciones:

  • Windows 7 x64
  • Cygwin x86
  • TMUX 1.9a
  • Vim 7.4.726 (compilado con + forma de cursor)
  • emulador de terminal: mintty 1.1.3
  • utilizado en Cygwin Terminal o Cmder (de cualquier manera, las formas del cursor funcionan solo sin TMUX)
  • echo $TERM me da screen-256color (en TMUX y fuera de él, porque tengo export TERM=screen-256color en mi .bashrc
  • .tmux.conf contiene:
    set -g default-terminal "screen-256color" setw -g xterm-keys on

Lo que ya probé sin éxito:

  • export TERM=xterm
  • export TERM=vt100
  • "clic derecho en la barra> Opciones> Apariencia> Cursor" (cambia el cursor de forma permanente, los modos vim aún no lo cambian)

Respuesta:

Parece que el problema es que tmux no envía los códigos de escape que cambian el cursor al emulador de terminal. Necesita envolver sus códigos de escape deseados en una secuencia especial que le dice a tmux que debe pasarlo a la terminal externa.

La secuencia en la que necesita ajustar su secuencia de escape es \<Esc>Ptmux;\<Esc> ... \<Esc>\\ ( Fuente ). La ... es tu secuencia de escape.

Entonces, intente hacer algo como esto en su .vimrc :

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

No uso su emulador de terminal o cygwin, por lo que no pude probar este código. Pero el método funcionó para mí (acabo de envolver otros códigos de escape que se adaptan a mi terminal).

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım