263 votes

perte du schéma de couleurs de vim en mode tmux

J'utilise iterm2 et quand je suis en mode tmux, le schéma de couleurs que j'ai défini dans vim ne s'affiche pas. Seul le schéma de couleurs que j'ai défini dans iterm. Si je lance vim à partir du shell, le schéma de couleurs apparaît correctement - c'est seulement lorsque je suis en mode tmux.

J'ai essayé de régler :colorscheme molokai quand vous êtes dans vim (voir la capture d'écran ci-dessous) et cela ne change pas - encore une fois, le schéma de couleurs par défaut pour iterm2 reste.

Est-ce que j'ai oublié un paramètre dans iterm ou tmux.conf ? Mes dotfles sont sur github ici.

34 votes

Que se passe-t-il quand vous faites $ tmux -2 ?

4 votes

C'était tout à fait ça. C'est quoi le drapeau -2 ?

12 votes

Il force tmux à travailler avec 256 couleurs.

285voto

Seyeong Jeong Points 1817

J'ai eu le même problème. La seule différence est que j'utilise solarize plutôt que molokai .

Pour résoudre le problème, j'ai mis en place un alias dans le fichier ~/.bashrc :

alias tmux="TERM=screen-256color-bce tmux"

Et mettre en place le default-terminal option dans ~/.tmux.conf :

set -g default-terminal "xterm"

Enfin, faites $ source ~/.bashrc pour charger un nouvel alias.

26 votes

Je l'utilise à la place de tmux -2 car elle est plus verbeuse.

105 votes

Personnellement, j'ai dû utiliser set -g default-terminal "screen-256color" pour travailler plutôt que xterm sur OS X, installé dans une boîte Ubuntu. Je me suis référé à ce site : rhnh.net/2011/08/20/vim-and-tmux-on-osx

8 votes

L'alias ici n'a pas de sens : il prétend à tmux qu'il tourne dans screen ou tmux, ce qui n'est presque jamais le cas. Pour dire à tmux de supposer que le terminal dans lequel il s'exécute supporte 256 couleurs, exécutez tmux -2 o tmux -2 attach (tmux décide chaque fois que vous attachez une session nouvelle ou existante à un terminal). Un alias raisonnable serait alias tmux='tmux -2' . Voir aussi tmux, TERM et support des 256 couleurs

124voto

ElefEnt Points 129

J'ai essayé toutes les solutions ci-dessus et ce qui a finalement fonctionné pour moi est de mettre les lignes suivantes dans le fichier .tmux.conf :

set -g default-terminal "xterm-256color"

0 votes

J'utilise tmux via SSH et c'est également ce qui a fonctionné pour moi, même si je n'utilise pas xterm, juste SSH normal.

0 votes

Je ne l'utilisais pas via ssh et c'était la seule réponse qui fonctionnait pour moi. Session iTerm locale dans OSX 10.9.5.

0 votes

Cela fonctionne pour moi (MacOS Mojave + iTerm2/Alacritty), merci.

81voto

tristen Points 820

Comme @romainl le mentionne plus haut, j'ai dû forcer tmux à utiliser 256 couleurs en ajoutant l'attribut -2 drapeau :

$ tmux -2

J'ai ajouté alias tmux='tmux -2' à mon bash_profile, pour que je n'oublie pas :)

0 votes

En fait, ce n'est pas du tout obligatoire : je n'utilise pas de -2 mais j'ai 256 couleurs qui fonctionnent dans Vim en tmux.

0 votes

@romainl C'est nécessaire si tmux ne détecte pas votre terminal comme ayant 256 couleurs, ce qui est assez commun.

1 votes

@Gilles, Vim ne détecte pas que le terminal supporte 256 couleurs parce que la configuration par défaut de tmux TERM es screen . -2 ne change pas TERM et ne change rien à la couleur des informations que Vim reçoit de son environnement : :echo &t_Co revient toujours 8 . Avec les informations qui lui sont fournies, Vim fait ce qu'il faut. Les seules choses qui doivent être définies sont 1. les paramètres de votre émulateur de terminal TERM a xterm-256color ou une valeur équivalente comme urxvt-unicode-256color et 2. la valeur par défaut de tmux TERM avec set -g default-terminal "screen-256color" .

39voto

Alex Ford Points 15277

Je viens de découvrir pourquoi j'étais si confus. Comme d'autres ici, j'avais du mal à faire en sorte que le paramètre du terminal par défaut prenne effet. Je me suis souvenu que j'avais une session tmux en arrière-plan. J'ai rattaché ma session, fermé mes processus, et fermé TOUS les processus tmux. La prochaine fois que j'ai redémarré tmux, le paramètre de terminal par défaut dans .tmux.conf a commencé à prendre effet. Je ne sais pas si d'autres personnes font de même, mais je recommande de fermer tous les processus tmux avant de modifier le fichier .tmux.conf fichier.

J'ai réussi à faire fonctionner mon installation sur ma machine locale (OSX 10.9.5 avec iTerm2) sans aucune modification de l'installation. .bashrc o .bash_profile . Tout ce que j'ai fait, c'est ajouter la ligne set -g default-terminal "xterm-256color" a ~/.tmux.conf et redémarré tous les processus tmux.

J'ai réussi à faire fonctionner mon installation à distance (ssh vers Ubuntu 14.04) exactement de la même manière, sans aucune modification de l'installation. .bashrc . J'ai simplement ajouté set -g default-terminal "xterm-256color" a ~/.tmux.conf sur ma machine distante et redémarré tous les processus tmux distants.

Vous pouvez tester ce que Vim voit en faisant echo $TERM à partir d'une session tmux. Il n'arrête pas de dire screen comme valeur jusqu'à ce que je redémarre tous les processus tmux, et à ce moment là, il reflétait xterm-256color comme prévu.

J'espère que cela vous aidera.

1 votes

J'ai confirmé sur plusieurs autres systèmes d'exploitation depuis cet article, en fermant tous les processus et en configurant le paramètre default-terminal option dans .tmux.conf a fonctionné 100% du temps jusqu'à présent.

3 votes

Moi aussi ! j'aurais passé moins de temps sur ce sujet si cette réponse était plus haut.

22voto

Jpatrick Points 101

C'est un peu dépassé, mais il est bon de rappeler que l'utilisation de l'écran casse souvent les touches Home et End. Utilisation de

export TERM="xterm-256color"

in devrait conserver la fonctionnalité de ces derniers et permettre au schéma de couleurs (ou au courant porteur) de fonctionner correctement.

0 votes

Merci de me le signaler. Je ne le savais pas. Il semble toujours fonctionner pour Debian derv d'après ce que j'ai vu jusqu'à présent. Pour ma défense, le message faisait référence à OSX.

0 votes

Tmux 1.9a, OSX 10.9.2, iTerm2 Build 1.0.0.20130622 export TERM="xterm-256color" dans .bash_profile, puis définir iterm sur xterm-256-color a fonctionné pour moi. Il n'est pas nécessaire de définir une quelconque configuration tmux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X