Jak mogę mieć różne kształty kursora podczas uruchamiania vima w tmuxie pod cygwinem?
BEZ tmux te linie wystarczyłyby, aby osiągnąć to, czego chcę:
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
Ale jakoś mój tmux go psuje - kursor ma kształt bloku bez względu na to, w jakim trybie vim jestem.
Moje specyfikacje:
- Windows 7 x64
- Cygwin x86
- TMUX 1.9a
- Vim 7.4.726 (skompilowany z + kursorem)
- emulator terminala: mintty 1.1.3
- używane w Cygwin Terminal lub Cmder (w obu kierunkach kształty kursorów działają tylko bez TMUX)
echo $TERM
daje miscreen-256color
(w TMUX i poza nim, bo mamexport TERM=screen-256color
w sobie.bashrc
.tmux.conf
zawiera:
set -g default-terminal "screen-256color" setw -g xterm-keys on
Co próbowałem już bez powodzenia:
export TERM=xterm
export TERM=vt100
- „kliknij prawym przyciskiem myszy pasek> Opcje> Wygląd> Kursor” (trwale zmienia kursor, tryby vim nadal go nie zmieniają)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
ilet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
w tmuxiescreen-256color
. tmux ma wersję 1.9 (a twoja to 1.9a). Uruchomiłem vima w tmuxvim -u NULL
(-u NULL oznacza brak konfiguracji). Kształt kursora jest blokowany w dowolnym trybie, ale kiedy przypisujęt_SI
i zmieniamt_EI
kształt z bloku (tryb normalny) naI
(tryb wstawiania) zgodnie z oczekiwaniami. Czy możesz spróbować uruchomić vim z pustym .vimrc, bez żadnych kolorów i wtyczek?Odpowiedzi:
Wydaje się, że problem polega na tym, że tmux nie wysyła zmieniających kursor kodów specjalnych do emulatora terminala. Musisz zawinąć pożądane kody ucieczki w specjalną sekwencję, która mówi tmux, że powinien przekazać go do zewnętrznego terminalu.
Sekwencja, w której musisz zawinąć sekwencję ucieczki, to
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Źródło ). To...
twoja sekwencja ucieczki.Więc spróbuj zrobić coś takiego w swoim
.vimrc
:Nie używam emulatora terminali ani cygwina, więc nie mogłem przetestować tego kodu. Ale metoda zadziałała dla mnie (właśnie zapakowałem inne kody ucieczki, które pasują do mojego terminala).
źródło
.bashrc
. Dziękuję Ci.Prawidłowa wartość
$TERM
zmiennej środowiskowej jest bardzo ważna. Upewnij się, że różni się odscreen-256color
. Ustawxterm-256color
na przykład na.źródło