Как я могу иметь разные формы курсора при запуске vim внутри tmux под cygwin?
БЕЗ tmux этих строк будет достаточно для достижения того, что я хочу:
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
Но как-то мой tmux ломает его - курсор имеет форму блока независимо от того, в каком режиме vim я нахожусь.
Мои характеристики:
- Windows 7 x64
- Cygwin x86
- TMUX 1.9a
- Vim 7.4.726 (составлено с + cursorshape)
- эмулятор терминала: mintty 1.1.3
- используется в Cygwin Terminal или Cmder (в любом случае формы курсора работают только без TMUX)
echo $TERM
дает мнеscreen-256color
(в TMUX и за ее пределами, потому что у меня естьexport TERM=screen-256color
в моем.bashrc
.tmux.conf
содержит:
set -g default-terminal "screen-256color" setw -g xterm-keys on
Что я уже пробовал без успеха:
export TERM=xterm
export TERM=vt100
- «щелкните правой кнопкой мыши на панели> Параметры> Внешний вид> Курсор» (он постоянно меняет курсор, режимы vim по-прежнему не меняют его)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
иlet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
внутри tmuxscreen-256color
. У tmux версия 1.9 (а у вас 1.9a). Я запускаю vim внутри tmuxvim -u NULL
(-u NULL означает отсутствие конфигурации). Форма Курсор представляет собой блок в любом режиме, но когда я назначитьt_SI
иt_EI
форма переход от блока (нормальный режим) , чтобыI
(режим вставки) , как и ожидалось. Можете ли вы попробовать запустить vim с пустым .vimrc, без каких-либо цветовых схем и плагинов?Ответы:
Кажется, проблема в том, что tmux не отправляет изменяющие курсор коды перехода в эмулятор терминала. Вам нужно обернуть желаемые escape-коды в специальную последовательность, которая сообщает tmux, что он должен передать его на внешний терминал.
Последовательность, в которую нужно обернуть вашу escape-последовательность:
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Источник ). Это...
ваша последовательность побега.Итак, попробуйте сделать что-то вроде этого в вашем
.vimrc
:Я не использую ваш эмулятор терминала или Cygwin, поэтому я не смог протестировать этот код. Но метод работал для меня (я просто обернул другие escape-коды, которые подходят моему терминалу).
источник
.bashrc
. Спасибо.Правильное значение
$TERM
переменной среды очень важно. Убедитесь, что он отличается отscreen-256color
. Установите это,xterm-256color
например.источник