Wie kann ich verschiedene Cursorformen haben, wenn ich vim in tmux unter cygwin laufen lasse?
OHNE tmux würden diese Zeilen ausreichen, um das zu erreichen, was ich will:
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
Aber irgendwie bricht mein tmux es - der Cursor hat eine Blockform, egal in welchem vim-Modus ich mich befinde.
Meine Angaben:
- Windows 7 x64
- Cygwin x86
- TMUX 1.9a
- Vim 7.4.726 (kompiliert mit + cursorshape)
- Terminalemulator: Mintty 1.1.3
- In Cygwin Terminal oder Cmder verwendet (in beiden Fällen funktionieren Cursorformen nur ohne TMUX)
echo $TERM
gibt mirscreen-256color
(in TMUX und ausserhalb davon, weil ichexport TERM=screen-256color
in meinem.bashrc
.tmux.conf
enthält:
set -g default-terminal "screen-256color" setw -g xterm-keys on
Was ich schon erfolglos ausprobiert habe :
export TERM=xterm
export TERM=vt100
- "Rechtsklick auf die Leiste> Optionen> Aussehen> Cursor" (ändert den Cursor permanent, VIM-Modi ändern ihn immer noch nicht)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
undlet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
in tmux enthaltenscreen-256color
. tmux hat Version 1.9 (und Ihre ist 1.9a). Ich habe vim in tmux gestartetvim -u NULL
(-u NULL bedeutet keine Konfiguration). Die Cursorform ist in jedem Modus blockiert, aber wenn ich sie zuordnet_SI
undt_EI
formiere, wechsle ichI
wie erwartet vom Block (normaler Modus) zum (Einfügemodus). Können Sie versuchen, vim mit leerem .vimrc ohne Farbschemata und Plugins zu starten?Antworten:
Es scheint das Problem zu sein, dass tmux keine Escape-Codes an den Terminal-Emulator sendet, die den Cursor ändern. Sie müssen Ihre gewünschten Escape-Codes in eine spezielle Sequenz einwickeln, die tmux mitteilt, dass sie an das äußere Terminal weitergeleitet werden sollen.
Die Sequenz, in die Sie Ihre Escape-Sequenz einwickeln müssen, lautet
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Source ). Das...
ist deine Fluchtsequenz.Also, versuchen Sie in Ihrem so etwas wie dies zu tun
.vimrc
:Ich verwende weder Ihren Terminal-Emulator noch Cygwin, daher konnte ich diesen Code nicht testen. Aber die Methode funktionierte für mich (ich habe gerade andere Escape-Codes eingepackt, die zu meinem Terminal passen).
quelle
.bashrc
. Vielen Dank.Der korrekte Wert der
$TERM
Umgebungsvariablen ist sehr wichtig. Stellen Sie sicher, dass es sich von unterscheidetscreen-256color
. Stellen Sie esxterm-256color
zum Beispiel auf.quelle