Tout cela dans iTerm2 sur OS X.
J'avais
export TERM='xterm-256color'
dans mon .bashrc
. Cela signifiait que Vim in tmux utilisait 256 couleurs.
Et une fois j'ai ajouté
set -g xterm-keys on
les raccourcis clavier avec modificateurs fonctionnaient alors bien dans Vim. À savoir: shift+left/right
que j'ai mappé pour changer d'onglet Vim, ctrl+up/down
que j'ai mappé pour déplacer des lignes ("bulles"), et shift+left/right
qui fonctionnait hors de la boîte pour sauter par Word en mode ligne de commande (par exemple, en tapant quelque chose comme :e foo bar baz
) .
Cependant, cette configuration posait le problème suivant: la couleur d'arrière-plan de Vim ne s'affiche que derrière le texte, comme indiqué ici .
Alors j'ai enlevé
export TERM='xterm-256color'
de mon .bashrc
et au lieu de mettre ceci dans mon .tmux.conf
:
set -g default-terminal "screen-256color"
Cela corrigeait la couleur d'arrière-plan de Vim, mais cassait les raccourcis clavier - ils faisaient des choses inattendues (déplacer le curseur, supprimer du texte) à la place.
En utilisant ctrl+v
pour insérer le résultat textuel des combinaisons de touches (comme décrit ici ), j'ai pu y remédier:
map [1;5A <C-Up>
map [1;5B <C-Down>
map [1;2D <S-Left>
map [1;2C <S-Right>
cmap [1;2D <S-Left>
cmap [1;2C <S-Right>
Les raccourcis fonctionnent, mais cela ne semble pas être la bonne solution. Quelqu'un pourrait-il me dire ce qui se passe ici et comment y remédier?
Vous devez définir l'option tmux de la fenêtre xterm-keys
afin que tmux passe ces clés à travers ses terminaux. Vous voulez probablement mettre ceci dans votre ~/.tmux.conf
:
set-window-option -g xterm-keys on
Vim configurera généralement automatiquement le traitement de ces clés lorsque TERM est xterm
- quelque chose, mais il la ignore puisque TERM est screen-256color
. Vous pouvez configurer manuellement ces clés dans votre ~/.vimrc
comme ceci:
if &term =~ '^screen'
" tmux will send xterm-style keys when its xterm-keys option is on
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
endif
Au moins, vous n’avez pas à cartographier toutes les combinaisons possibles.
Comme expliqué ici , désactivez la suppression de la couleur d'arrière-plan (BCE) en désactivant l'option de terminal t_ut
(exécutez :set t_ut=
dans Vim, puis appuyez sur Control+L pour rafraîchir l’affichage du terminal) afin que les jeux de couleurs fonctionnent correctement lorsque Vim est utilisé dans les écrans tmux et GNU.
De cette façon, vous pouvez conserver votre valeur TERM
en tant que xterm-256color
pour une détection correcte des clés tout en obtenant un rendu correct du jeu de couleurs Vim! :-)