Como posso ter diferentes formas de cursor ao executar o vim dentro do tmux no cygwin?
SEM tmux essas linhas seriam suficientes para alcançar o que eu quero:
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
Mas de alguma forma o meu tmux o quebra - o cursor tem forma de bloco, não importa em que modo vim eu esteja.
Minhas especificações:
- Windows 7 x64
- Cygwin x86
- TMUX 1.9a
- Vim 7.4.726 (compilado com + cursorshape)
- emulador de terminal: mintty 1.1.3
- usado no Cygwin Terminal ou Cmder (de qualquer maneira, as formas do cursor funcionam apenas sem o TMUX)
echo $TERM
me dáscreen-256color
(no TMUX e fora dele, porque eu tenhoexport TERM=screen-256color
no meu.bashrc
.tmux.conf
contém:
set -g default-terminal "screen-256color" setw -g xterm-keys on
O que eu tentei já sem sucesso:
export TERM=xterm
export TERM=vt100
- "clique com o botão direito na barra> Opções> Looks> Cursor" (ele muda o cursor permanentemente, os modos vim ainda não o alteram)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
elet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
dentro do tmuxscreen-256color
. O tmux possui a versão 1.9 (e a sua é a 1.9a). Eu iniciei o vim dentro do tmuxvim -u NULL
(-u NULL significa nenhuma configuração). A forma do cursor é um bloco em qualquer modo, mas quando atribuot_SI
et_EI
formato alterno do bloco (modo normal) paraI
(modo de inserção) conforme o esperado. Você pode tentar iniciar o vim com .vimrc vazio, sem esquemas e plugins de cores?Respostas:
Parece que o problema é que o tmux não envia os códigos de escape que alteram o cursor para o emulador de terminal. Você precisa agrupar os códigos de escape desejados em uma sequência especial que diz ao tmux que deve transmiti-lo ao terminal externo.
A sequência na qual você precisa agrupar sua sequência de escape é
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Origem ). A...
é a sua sequência de fuga.Portanto, tente fazer algo assim no seu
.vimrc
:Como não uso o emulador de terminal ou o cygwin, não pude testar esse código. Mas o método funcionou para mim (acabei de incluir outros códigos de escape adequados ao meu terminal).
fonte
.bashrc
. Obrigado.O valor correto da
$TERM
variável de ambientes é muito importante. Verifique se é diferente descreen-256color
. Defina comoxterm-256color
por exemplo.fonte