105 votes

Support des 256 couleurs pour l'arrière-plan de vim dans tmux

En utilisant vim dans tmux je peux voir que le support des 256 couleurs est activé. avec $tput colors

Cependant, changer le schéma de couleurs dans vim tout en étant dans tmux changera le schéma de couleurs sur une base par ligne mais pas le fond entier. voir la capture d'écran enter image description here

Voici un extrait de mon fichier .vimrc par exemple. Mon schéma de couleurs original est solarisé en foncé et après avoir exécuté :colorscheme molokai vous voyez ce qui se passe.

info

  • gnome-terminal
  • bash

dans mon ~/.tmux.conf

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

dans mon ~/.vimrc

    set t_Co=256

dans mon ~/.bashrc

# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"

dans mon ~/.profil

# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
    export TERM='xterm-256color'
  else
    export TERM='xterm-color'
  fi

Avez-vous une idée de la façon dont je peux modifier le schéma de couleurs dans vim ? Est-ce que tous mes extraits de fichiers ont l'air bien ?

79voto

bloy Points 906

D'après l'aspect de votre .bashrc et .profile, les shells dans tmux remplacent le paramètre 'default-terminal' dans votre conf tmux. Quelque chose comme ça :

  • tmux crée un nouveau Shell avec TERM=screen-256color
  • .bashrc/.profile exécuter, définir TERM=xterm-256color
  • vim fonctionne, essaie d'utiliser un TERM incorrect pour tmux

vous pouvez le vérifier en exécutant

echo $TERM

dans un nouveau tmux Shell.

Tmux est relativement pointilleux sur le fait d'avoir un terminal correctement configuré. Si vous le pouvez, définissez la valeur du terme dans la configuration de gnome-terminal, pas dans votre .bashrc. Sinon, entourez ces paramètres d'une vérification de TERM "screen" ou "screen-256color", et ne les réinitialisez pas dans ce cas.

Tmux veut VRAIMENT que le terminal soit réglé sur screen o screen-256color

65voto

Fredrik Points 185

Comme expliqué ici , désactiver Couleur de fond Effacer (BCE) en dégageant le t_ut option de terminal (exécuter :set t_ut= dans Vim, puis appuyez sur Control + L pour rafraîchir l'affichage du terminal) afin que les schémas de couleurs fonctionnent correctement lorsque Vim est utilisé dans tmux et GNU screen.

17voto

Boogy Points 546

J'ai trouvé un meilleur moyen sur ce poste . Vous pouvez faire un alias de tmux pour tmux -2 qui forcera tmux à supposer que le Shell utilise un terminal à 256 couleurs.

5voto

Munish Points 151

C'est ce qui a fonctionné pour moi sur #Ubuntu et #Mac :

# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
  export TERM=xterm-256color
fi
alias tmux='tmux -2'  # for 256color
alias tmux='tmux -u'  # to get rid of unicode rendering problem

Rechargez les paramètres :

$ source ~/.bashrc # Ubuntu

$ source ~/.bash_profile # Mac

Configurer .bashrc pour Mac (comme il est utilisé par tmux)

# File: ~/.bashrc (Mac)
source ~/.bash_profile

Configurer l'option "default-terminal" dans ~/.tmux.conf.

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu

2voto

lgalke Points 21

Si vous rencontrez encore des problèmes : J'ai remarqué que vim revient à l'utilisation de l'option t_Co=8 à l'intérieur de tmux même si $TERM est réglé sur screen-256color . Ma solution de contournement est ce snippet dans vimrc :

if exists("$TMUX")
        set t_Co=256
        set notermguicolors
else
        set termguicolors
endif

El $TMUX n'est remplie que si elle se trouve dans une session tmux. Dans ce cas, j'autorise vim à utiliser 256 couleurs. Notez que j'ai également désactivé termguicolors car tmux ne supporte pas les vraies couleurs.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X