web-dev-qa-db-fra.com

perdre les couleurs vim en mode tmux

J'utilise iterm2 et lorsque je suis en mode tmux, le schéma de couleurs que j'ai défini dans vim n'apparaît pas. Seul le jeu de couleurs que j'ai défini dans iterm. Si j'exécute vim depuis Shell, le schéma de couleurs semble correct - ce n'est que lorsque je suis en mode tmux.

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

Me manque-t-il des réglages dans iterm ou tmux.conf? Mes points sont sur github ici.

207
tristen

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

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

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

Et configurez l'option default-terminal dans ~/.tmux.conf:

set -g default-terminal "xterm"

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

235
Seyeong Jeong

Comme @romainl le mentionne ci-dessus, je devais obliger tmux à utiliser 256 couleurs en ajoutant l'indicateur -2:

$ tmux -2

J'ai ajouté alias tmux='tmux -2' à mon profil bash, alors je n'oublie pas :)

68
tristen

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

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

Je viens de découvrir pourquoi j'avais beaucoup de confusion. Comme d’autres ici, j’avais du mal à faire en sorte que le réglage du terminal par défaut soit effectif. Je me suis rappelé que j'avais une session tmux en arrière-plan. J'ai re-connecté 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 le font également, mais je recommande de fermer tous les processus tmux avant de modifier le fichier .tmux.conf.

Ma configuration a été configurée pour fonctionner sur ma machine locale (OSX 10.9.5 avec iTerm2) sans aucune modification de .bashrc ou .bash_profile. Tout ce que j'ai fait a été d'ajouter la ligne set -g default-terminal "xterm-256color" à ~/.tmux.conf et de redémarrer tous les processus tmux.

J'ai obtenu que ma configuration à distance (ssh sur Ubuntu 14.04) fonctionne exactement de la même manière sans aucune modification de .bashrc. J'ai simplement ajouté set -g default-terminal "xterm-256color" à ~/.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 depuis une session tmux. Il a continué à dire screen comme valeur jusqu'à ce que je redémarre tous les processus tmux, point auquel il a reflété xterm-256color comme prévu.

J'espère que cela pourra aider.

26
Chev

C’est donc un peu vicié, mais il vaut la peine de mentionner que l’utilisation de l’écran casse souvent les touches Accueil et Fin. En utilisant 

export TERM="xterm-256color"

in devrait en conserver la fonctionnalité et permettre au schéma de couleurs (ou au CPL) de fonctionner correctement.

19
Jpatrick

J'avais besoin de vim pour afficher correctement avec tmux dans terminal sur Ubuntu et cygwin/mintty sur Windows. Je l'ai obtenu au travail en combinant les réponses comme ceci.

En .bashrc:

alias tmux="tmux -2"

En .vimrc:

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

sur la base des réponses à cette question, cette page wiki de Vim et cette question de curseur de bloc

13
Andrew Johnston

J'ai essayé toutes les instructions ci-dessus et j'ai découvert que la chose la plus importante est que je dois explicitement ajouter la ligne suivante dans mon fichier .bashrc.

export TERM=screen-256color

Je ne sais pas pourquoi l'alias tmux = "TERM = screen-256color-bce tmux" ne fonctionne pas . J'utilise Sierra 10.12.1.

10
Lion Lai

Si quelqu'un a besoin d'une prise en charge des couleurs 24 bits:

Tmux supporte les couleurs 24 bits à partir de la version 2.2. Si votre terminal prend en charge les couleurs 24 bits, ajoutez votre terminal au paramètre de substitution du terminal. Par exemple,

set -ga terminal-overrides ",xterm-256color:Tc"

Liste de contrôle de mon environnement:

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14 (Le type de terminal de rapport est xterm-256color)
  • neovim 0.1.7 (Activez la couleur 24 bits en ajoutant: xterm-256color à .vimrc)
  • tmux 2.3 (Ajouter set -ga terminal-overrides ",xterm-256color:Tc" à .tmux.conf)

Rien d'autre que je dois ajouter dans .bashrc ou .zshrc.

J'espère que cela pourrait aider.

9
Yanzhe Chen

L'ajout de la ligne suivante dans le fichier .tmux.conf a fonctionné pour moi avec macOS Sierra 10.12.6,

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

4
Zack Zhu

Si vous utilisez tmuxinator ou mux, vous devrez les ajouter dans .bashrc ou .zshrc:

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

Ces forces à utiliser 256 couleurs dans le terminal.

Ensuite, les commandes tmux, tmuxinator et mux fonctionneront.

3
qingxp9

Pour configurer la couleur correcte et éliminer le problème de rendu dans Ubuntu et Mac: 

vérifie ça

1
Munish

A partir de la page de manuel tmux, ajout de flag comme suit:

tmux -2

Cet indicateur -2 oblige tmux à s'exécuter en mode 256 couleurs.

Ça marche pour moi

1
RyanLiu

Je n'ai pas eu beaucoup de chance en essayant d'exporter une TERM différente ou de configurer default-terminal dans mon .tmux.conf.

Ma solution pour fixer les couleurs vim dans tmux ajoutait cette ligne à .tmux.conf:

set -g terminal-overrides 'xterm:colors=88'

Je ne suis pas sûr de savoir pourquoi cette substitution était nécessaire étant donné que mon TERM=xterm et moi avons iTerm également réglé sur xterm, mais cela semble fonctionner.

1
Patrick Lewis

J'ai supprimé la ligne set termguicolors, mais cela ne fonctionne pas . Définir set notermguicolors à la place dans les .vimrc.

0
alextanhongpin

Je viens juste de faire face à ce problème, et bien que toutes les réponses précédemment affichées soient utiles, elles ne résolvent pas le problème dans mon cas.

Mon problème a été résolu en supprimant la ligne suivante dans mon .vimrc:

set termguicolors

qui était redondant avec une autre instruction de toute façon. 

Maintenant, avec la ligne suivante trouvée dans les réponses précédentes dans mon .tmux.conf:

export TERM="screen-256color"

tout est beau et coloré.

0
Nitlev