66 votes

Vim dans tmux affiche de mauvaises couleurs

J'ai installé Ubuntu 11.10. Puis j'ai téléchargé le thème Solarized pour Gnome Terminal. Depuis le terminal, mon vim semble bon : le plugin vim-powerline s'affiche correctement et la syntaxe est surlignée avec les couleurs appropriées. Mais lorsque j'exécute tmux et là vim - la coloration syntaxique n'utilise qu'une seule 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 de '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

2voto

Hemlock Points 41

Pour moi, il semble que personne ne sait de quoi il parle...


Comment fonctionne notre procédure d'ouverture :

  1. ouvrir un terminal (whichever)
  2. ouvrir un tmux
  3. Ouvrir le site vim / nvim

1 Terminal

Ouvrir un terminal (peu importe ce que vous utilisez - j'utilise st ) et écrire une commande :

 $  ziga > ziga--workstation > ~

  > echo $TERM

st-256color

Comme réponse, j'ai obtenu une chaîne de caractères st-256color parce que cette chaîne est compilée comme la chaîne littérale C termname en el st (vérifier aquí ) . C'est similaire quel que soit le terminal que vous utilisez. Quelque part dans le binaire, il y a une chaîne littérale qui est définie comme une variable environnementale. TERM lorsque le terminal est démarré.

Ici, vous ne pouvez rien faire d'autre que de vous souvenir de cette chaîne.


2 Tmux

Maintenant, continuons la chaîne... tmux est ouvert après votre terminal. Dans le fichier de configuration ~/.tmux.conf Je dois d'abord m'assurer d'identifier les variables environnementales. TERM que mon terminal a défini. Donc j'écris comme ça :

set-option -sa terminal-overrides ",st*:Tc"

Cette ligne vérifie si la variable environnementale $TERM commence par st (donc st* ) et s'assure d'utiliser la couleur réelle parce que les "couleurs indexées" (8 bits = 2^8 = 256 couleurs) n'est pas suffisant pour nous. Nous voulons tmux à utiliser "true colors" (24 bits = 2^24 = 16777215 couleurs) . Ici, nous pourrions ajouter quelques lignes supplémentaires, juste pour être sûrs que nous allons faire correspondre la valeur de TERM . Dans mon cas, la ligne ci-dessous fonctionne également parce qu'elle recherche 256col au milieu de TERM :

set-option -sa terminal-overrides ",*256col*:Tc"

Et si j'utilisais xfce4-terminal qui fixe TERM = xterm-256color Je pourrais utiliser une ligne comme celle-ci à la place :

set-option -sa terminal-overrides ",xterm*:Tc"

Jusqu'à présent tmux est couverte. Mais avant de continuer la chaîne, nous devons nous assurer que tmux exportera également sa variable environnementale. TERM .

Dans ce cas, nous pouvons le définir comme nous le souhaitons en utilisant cette ligne à l'intérieur de la balise ~/.tmux.config :

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

Assurez-vous maintenant de quitter le tmux et tuer son serveur :

tmux kill-server

Ensuite, entrez tmux en utilisant la commande tmux et exécuter la commande :

 $  ziga > ziga--workstation > ~

  > echo $TERM

tmux-256color

Vous devriez obtenir une réponse tmux-256color . Maintenant, nous pouvons continuer à vim ...


3 Vim

Dans notre étape finale, nous devons juste configurer vim en ajoutant la ligne suivante dans son fichier de configuration ~/.vimrc :

if exists('+termguicolors') && ($TERM == "st-256color" || $TERM == "tmux-256color")
    let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
    let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
    set termguicolors
endif

Ceci définit correctement les séquences d'échappement &t_8f y &t_8b et enfin, il fixe "true colors" à l'intérieur de vim . Mais cela ne se fait que si TERM est :

  • st-256color (quand si j'ouvre vim directement dans le st terminal sans ouverture tmux avant cela)

  • tmux-256color (quand j'ouvre vim alors que vous êtes déjà dans tmux )

Si vous utilisez plusieurs terminaux, vous devez les ajouter comme suit :

if exists('+termguicolors') && ($TERM == "st-256color" || $TERM == "tmux-256color" || $TERM == "xterm-256color")
    let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
    let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
    set termguicolors
endif

Sinon, les couleurs ne fonctionneront pas sur toutes les bornes... Bonne chance !

1voto

jordanbrock Points 11

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

Il devrait être colorscheme solarized

Pas sûr que cela aide :)

0voto

jtpereyda Points 1875

Vous avez peut-être le même problème que celui documenté dans este réponse.

Fondamentalement, le paramètre .tmux.conf fonctionne, et TERM est réglé sur screen-256color mais ensuite, tmux ouvre bash et appelle votre .bashrc, ce qui configure TERM à quelque chose d'autre (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 TERM à l'intérieur de .bashrc et ne pas le modifier s'il est déjà screen-256color .

0voto

Wernight Points 1333

Dans le Shell démarrant tmux, vérifiez que $TERM est soit xterm-256color o screen-256color . Voir comment changer $TERM :

  • Habituellement, le changement ~/.Xresources est le meilleur moyen (s'il est supporté)
  • について gnome-terminal voir https://askubuntu.com/a/379472

En guise d'alternative, comme Maquereau sacré dit, vous pouvez forcer tmux à 256color via :

$ tmux -2

0voto

JEnriquePs Points 1

[Solucion] [1] qui peuvent perturber 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 sous l'environnement TERM=screen-256color, comme le recommandent certains experts : http://sunaku.github.io/vim-256color-bce.html

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