Comment puis-je avoir différentes formes de curseur lors de l'exécution de vim dans tmux sous cygwin?
SANS tmux ces lignes seraient suffisantes pour réaliser ce que je veux:
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
Mais en quelque sorte, mon tmux le brise - le curseur a la forme d'un bloc quel que soit le mode vim dans lequel je suis.
Mes spécifications:
- Windows 7 x64
- Cygwin x86
- TMUX 1.9a
- Vim 7.4.726 (compilé avec + cursorshape)
- émulateur de terminal: mintty 1.1.3
- utilisé dans Cygwin Terminal ou Cmder (dans les deux cas, les formes de curseur fonctionnent uniquement sans TMUX)
echo $TERM
me donnescreen-256color
(dans TMUX et en dehors, parce que j'aiexport TERM=screen-256color
dans mon.bashrc
.tmux.conf
contient:
set -g default-terminal "screen-256color" setw -g xterm-keys on
Ce que j'ai déjà essayé sans succès:
export TERM=xterm
export TERM=vt100
- "clic droit sur la barre> Options> Apparences> Curseur" (il change le curseur de façon permanente, les modes vim ne le changent toujours pas)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
etlet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
dans tmuxscreen-256color
. tmux a la version 1.9 (et la vôtre est 1.9a). J'ai lancé vim dans tmuxvim -u NULL
(-u NULL signifie pas de configuration). La forme du curseur est un bloc dans n'importe quel mode, mais lorsque j'affectet_SI
et que jet_EI
passe du bloc (mode normal) àI
(mode d'insertion) comme prévu. Pouvez-vous essayer de lancer vim avec .vimrc vide, sans aucun schéma de couleurs ni plug-in?Réponses:
Il semble que le problème soit que tmux n'envoie pas vos codes d'échappement de changement de curseur à l'émulateur de terminal. Vous devez envelopper vos codes d'échappement souhaités dans une séquence spéciale qui indique à tmux qu'il doit le transmettre au terminal externe.
La séquence dans laquelle vous devez encapsuler votre séquence d'échappement est
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Source ). C'est...
votre séquence d'évasion.Alors, essayez de faire quelque chose comme ça dans votre
.vimrc
:Je n'utilise pas votre émulateur de terminal ou cygwin, je n'ai donc pas pu tester ce code. Mais la méthode a fonctionné pour moi (j'ai simplement encapsulé d'autres codes d'échappement qui conviennent à mon terminal).
la source
.bashrc
. Je vous remercie.La valeur correcte de
$TERM
la variable d'environnements est très importante. Assurez-vous qu'il est différent descreen-256color
. Réglez-lexterm-256color
par exemple.la source