¿Cómo puedo tener diferentes formas de cursor cuando ejecuto 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 + cursores)
- emulador de terminal: mintty 1.1.3
- utilizado en Cygwin Terminal o Cmder (de cualquier manera, las formas de cursor funcionan solo sin TMUX)
echo $TERM
me dascreen-256color
(en TMUX y fuera de él, porque tengoexport TERM=screen-256color
en mi.bashrc
.tmux.conf
contiene:
set -g default-terminal "screen-256color" setw -g xterm-keys on
Lo que probé ya sin éxito:
export TERM=xterm
export TERM=vt100
- "clic derecho en la barra> Opciones> Apariencia> Cursor" (cambia el cursor permanentemente, los modos vim aún no lo cambian)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
ylet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
dentro de tmuxscreen-256color
. tmux tiene la versión 1.9 (y su es 1.9a). He lanzado vim dentro de tmuxvim -u NULL
(-u NULL significa que no hay configuración). La forma del cursor es bloque en cualquier modo, pero cuando asignot_SI
yt_EI
cambio de forma de bloque (modo normal) aI
(modo de inserción) como se esperaba. ¿Puedes intentar iniciar vim con .vimrc vacío, sin esquemas de colores ni complementos?Respuestas:
Parece que el problema es que tmux no envía sus códigos de escape que cambian el cursor al emulador de terminal. Debe ajustar 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 envolver su secuencia de escape es
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Fuente ). El...
es tu secuencia de escape.Entonces, intenta hacer algo como esto en tu
.vimrc
: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).
fuente
.bashrc
. Gracias.El valor correcto de
$TERM
la variable de entornos es muy importante. Asegúrese de que sea diferente descreen-256color
. Ajústelo a,xterm-256color
por ejemplo.fuente