web-dev-qa-db-fra.com

Vim dans tmux affiche de mauvaises couleurs

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 regardé 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
56
dhuCerbin

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.

54
Holy Mackerel

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 référentiel GitHub.

J'ai pu résoudre partiellement ce problème en spécifiant $TERM dans le fichier .bashrc:

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

28
Raminoid

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

27
kiran ps

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.

4
Marcin Kaminski

Comme expliqué par Marcin Kaminski, si TERM=screen-256color vim <filename> fonctionne pour vous, ajoutez simplement ce qui suit dans 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.

2
user3908054

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

Ce devrait être colorscheme solarized

Pas sûr que ça aide :)

1
jordanbrock

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, c’est également indiqué dans le référentiel officiel.

yum 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
0
Seandex

Vous pouvez avoir le même problème documenté dans this answer.

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

La solution consiste à définir TERM dans les paramètres de votre terminal plutôt que dans .bashrc. Si ce n'est pas une option, vous pouvez vérifier TERMinside .bashrc et ne pas le changer s'il s'agit déjà de screen-256color.

0
jtpereyda

Dans le shell qui démarre tmux, vérifiez que $TERM est soit xterm-256color, soit screen-256color. Voir comment changer $ TERM :

Comme alternative, comme Sacré Maquerea , vous pouvez forcer tmux à 256color via:

$ tmux -2
0
Wernight

[Solucion] [1] qui peut 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

0
JEnriquePs

Dans votre .bashrc ou .zshrc, ajoutez simplement

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

et commencez également par tmux -2

0
Talal