tmux vim colorscheme fond n'est pas à l'affiche

12

J'ai installé tmux mais maintenant les couleurs de vim en mode texte ne remplissent pas correctement la couleur d'arrière-plan. Voici à quoi cela ressemble avec colorscheme xoria256 dans le terminal Ubuntu 14.10 normal:

entrez la description de l'image ici

Et ici, quand je l'exécute dans le même terminal exact après tmux:

entrez la description de l'image ici

Ainsi, comme vous pouvez le voir, le bureau apparaît partout où il n'y a pas de texte dans vim. J'ai un terminal 256 couleurs.

Mon .tmux.conf:

~ cat .tmux.conf
set -g mode-mouse on
set -g default-terminal "screen-256color"

et j'ai un terminal 256 couleurs:

~ tput colors
256

Comment faire fonctionner correctement tmux avec les couleurs vim 256 couleurs qui fonctionnent bien dans le terminal normal?

Thomas Browne
la source
D'après mon expérience, tmux se comporte étrangement lorsqu'il est lancé à l'intérieur gnome-terminal. Essayez de lancer tmux avec TERM=xterm tmuxet voyez s'il se comporte différemment. Si xtermcela ne fonctionne pas, essayez xterm-256colorou xterm-color.
jw013
@ jw03 Malheureusement, aucune de ces options n'a permis de le corriger. Comportement identique. Même comportement si je lance tmux dans le terminateur
Thomas Browne
1
Dans un shell à l'intérieur de tmux, quelle est la valeur de $TERM? Si ce n'est pas le cas screen-256color, essayez de lancer vimas TERM=screen-256color vim, puis assurez-vous qu'aucun jeu de scripts de démarrage TERM(ou, si vous devez le faire pour contourner un logiciel bogué, assurez-vous qu'il vérifie d'abord la valeur d'origine).
Ry-
@minitech: Bingo. J'ai eu xterm-256color alors que screen-256color résout le problème. Si vous en faites une réponse, je l'accepterai.
Thomas Browne
Cela a fonctionné pour moi: stackoverflow.com/a/15095377/96855
Olivier Lalonde

Réponses:

5

Cela se produit lorsque TERMn'est pas défini sur le bon screen[-256color]dans l'environnement de Vim, généralement par un script de démarrage du shell. Si tel est le cas - par exemple, vous avez un

TERM=xterm-256color

, supprimez-le ou assurez-vous qu'il vérifie la valeur d'origine de TERMavant de le modifier, par exemple

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi
Ry-
la source
8

dans votre .tmux.conf:

set -g default-terminal "screen-256color"
Wayne Walker
la source
2

Commentaire tardif, mais j'avais parcouru toutes les discussions et je ne pouvais pas le résoudre avant d'avoir fait ce qui suit. Tout ce que j'avais à faire était d'ajouter une deuxième vérification de

if [[ $TERM == screen]]; then
    TERM=screen-256color
fi

en plus de la première déclaration conditionnelle de mon .bashrcdossier:

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

J'ai aussi eu ça dans .tmux.conf:

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

Dans mon .vimrcdossier:

set term=screen-256color
PQL
la source