Vim dans tmux affiche de mauvaises couleurs

57

J'ai installé Ubuntu 11.10. Ensuite téléchargé le thème Solarized pour Gnome Terminal. Depuis le terminal, vim a l’air beau: le plugin vim-powerline s’affiche correctement et la syntaxe est mise en surbrillance avec les couleurs appropriées. Mais lorsque j’exécute tmux et que j’exécute vim - la syntaxe en surbrillance n’utilise qu’une couleur de base et vim-powerline n’affiche aucune couleur. J'ai consulté la FAQ sur vim-powerline et la solution devrait être cette ligne dans .tmux-config:

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

Mais ça ne marche pas. J'ai regardé TERM et c'est le retour 'xterm' alors j'ai essayé:

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

Mais cela n'aide pas non plus.

C'est la seule ligne dans .tmux.config. Dans .vimrc j'ai les lignes suivantes:

call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized
dhuCerbin
la source
Aucune idée de la raison pour laquelle vous n’avez pas reçu de votes positifs, même de la part de ceux qui ont dû en bénéficier en obtenant des votes positifs de leurs propres réponses. +1 de moi. La question est bonne et m'a aidé à résoudre mon propre problème en le trouvant également.
0xC0000022L

Réponses:

54

Démarrer tmux avec le drapeau suivant corrige cela pour moi:

tmux -2

depuis la page de manuel de tmux:

-2 Forcer tmux à supposer que le terminal prend en charge 256 couleurs.

Sacré maquereau
la source
1
Bon indice. Lorsque la version d'écran de Cygwin a commencé à planter, vim, je suis revenu très rapidement à tmux. Aimer.
grantbow
1
FYI - C’est la seule chose qui a fonctionné pour moi avec tmux 2.3 et la dernière ligne électrique. Les couleurs dans la barre d'état de vim et tmux étaient vraiment bizarres.
Plasty Grove
28

Je rencontre le même problème sur Ubuntu 10.04 LTS avec Byobu 5.17 & tmux 1.5 avec la dernière version de Solarized du rapport GitHub.

J'ai pu résoudre partiellement ce problème en spécifiant $TERMdans le .bashrcfichier:

export TERM="xterm-256color"

Il semble également qu’un bogue a été enregistré sur le tableau de bord, mais il n’a pas encore été résolu: byobu n’affiche pas correctement les dircolors

Raminoïde
la source
2
C'est la seule chose qui a fonctionné pour moi!
Tranquille
Également travaillé sur Ubuntu 14.04 avec tmux 2.0
dukedave
Voici la solution sur OS X haha
Jay
27

cela a fonctionné pour moi

dans .tmux.conf

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

dans .vimrc

set term=screen-256color

supprime l'ancien terme pour .vimrc, croyez-moi, cela fonctionnera

kiran ps
la source
1
Ca ne marche pas pour moi tmux 1.8, vim 7.4.1816, ubuntu x86_64 avec noyau 3.13.0-92-generic. FYI.
fstang
1
Cela a fonctionné pour moi sans paramètres .vimrc, seulement .tmux.conf.
Geison Santos
Le paramètre .tmux.conf a fait l'affaire pour moi!
Hesselbom
4

Le type de terminal doit être défini sur screen-256color dans ~ / .tmux.conf. Il indique à tmux quoi définir la variable d’environnement TERM, afin que cela ne fonctionne pas pour la session en cours - commencez-en une nouvelle et testez-la ensuite.

Si cela ne fonctionne toujours pas, vous pouvez exécuter Vim en utilisant:

TERM=screen-256color vi

Ceci définit la variable d'environnement juste pour une exécution vi unique.

Si cela ne permet pas à vim d'afficher toutes les couleurs, vérifiez si votre terminal (je ne sais pas si vous effectuez un test avec un seul émulateur de terminal) est compilé pour prendre en charge la palette de 256 couleurs - téléchargez et exécutez le script Perl ci-dessous à partir de l'émulateur de terminal en question.

http://scie.nti.st/dist/256colors2.pl

PS Je suppose que vous avez déjà corrigé la faute de frappe notée par jordanbrock.

Marcin Kaminski
la source
2

Comme l’a expliqué Marcin Kaminski, si cela TERM=screen-256color vim <filename> fonctionne pour vous, ajoutez simplement ce qui suit à votre.bashrc

TERM=screen-256color

et suivant dans votre .tmux.conf:

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

J'ai eu le même problème, cela fonctionne pour moi.

utilisateur3908054
la source
Ce fut le seul qui a fonctionné pour moi (tmux 1.8).
Yamaneko
En fait, je viens de tester, et seul changer TERM=screen-256colorme suffisait, indépendamment de la configuration de tmux sur screen-256colorou sur xterm-256color. Je vous remercie!
Yamaneko
1

Il y a une faute de frappe dans la dernière ligne de votre .vimrc.

CA devrait etre colorscheme solarized

Pas sûr que ça aide :)

Jordanan
la source
0

Vous pouvez avoir le même problème documenté dans cette réponse.

Fondamentalement, le paramètre .tmux.conf fonctionne et TERMest défini sur screen-256color, mais ensuite tmux ouvre bash et appelle votre .bashrc, qui définit TERMquelque chose d'autre (peut-être xterm-256color).

La solution consiste à définir TERMles paramètres de votre terminal plutôt que dans .bashrc. Si ce n'est pas une option, vous pouvez vérifier à l' TERMintérieur de .bashrc et ne pas le changer si c'est déjà fait screen-256color.

jtpereyda
la source
0

Dans le shell qui démarre tmux, vérifiez qu’il $TERMs’agit de xterm-256colorou screen-256color. Voir comment changer $ TERM :

En guise d'alternative, comme l'a dit Holy Mackerel , vous pouvez forcer tmux à 256color via:

$ tmux -2
La nuit
la source
0

[Solucion] [1] pouvant gêner votre vision et rendre Vim désagréable, à utiliser pendant une période prolongée.

Vous pouvez résoudre ce problème en exécutant: set term = screen-256color dans Vim ou en relançant Vim dans l'environnement TERM = screen-256color, comme le recommandent certains experts: http://sunaku.github.io/vim-256color-bce.html

JEnriquePs
la source
2
Que voulez-vous dire par [Solucion] [1]? Avez-vous essayé de faire référence ou de créer un lien vers une autre réponse? Les réponses n'apparaissent pas toujours dans le même ordre. Je recommande d’élargir ceci pour clarifier ce que vous dites peut "perturber votre vision et rendre Vim désagréable à utiliser pendant une longue période".
Eliah Kagan
0

Dans votre .bashrc ou .zshrc, ajoutez simplement

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

et commencez aussi par tmux -2

Talal
la source
0

Pour ceux qui consomment du temps sur les couleurs, et si vim solarisé ne fonctionne pas sur tmux, ou fatigué de trouver des couleurs de vim, cela devrait fonctionner en une minute, également à partir du référentiel officiel suivant.

yum install vim-jellybeans

ou

mkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
touch ~/.vimrc 
sed -i '/colorscheme/d' ~/.vimrc
echo colorscheme jellybeans >> ~/.vimrc

cela résoudra le problème avec le magnifique jeu de couleurs et les motifs sont si concentrés et utiles, si vous essayez également de définir ces mots-clés en surbrillance, de recherche, cest tout. tout est déjà prêt à être utilisé. Vous pouvez même changer les couleurs dans le fichier de configuration.

Si vous ne souhaitez installer rien d'autre qu'une solution simple et rapide, ignorez ce qui précède et essayez ceci dans vim

:colo ron vous pouvez également remplacer "ron" par les ensembles suivants et même restaurer à solo default

blue 
darkblue 
default
delek
desert
elflord
evening
koehler
morning.vim
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner

et sauvegarder dans .vimrc

colo ron
syntax on
Seandex
la source
Celui qui a donné la rétroaction négative. laissez-moi entendre la raison valable.
Seandex