Environnement:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- Terminal GNOME 3.22.1 utilisant la version 0.46.1 + GNUTLS de VTE
- VIM - Vi IMproved 8.0 (12 septembre 2016, compilé le 22 février 2017 16:26:11)
- tmux 2.2
J'ai récemment commencé à utiliser tmux et j'ai observé que les couleurs dans Vim changent selon que je cours à l'intérieur ou à l'extérieur de tmux. Ci-dessous sont des captures d'écran de Vim à l'extérieur (à gauche) et à l'intérieur (à droite) de tmux lors de la visualisation d'un diff Git:
Ma TERM
variable est
- Tmux extérieur:
xterm-256color
- À l'intérieur de tmux:
screen-256color
Vim rapporte ces types de terminaux comme prévu (via :set term?
):
- Tmux extérieur:
term=xterm-256color
- À l'intérieur de tmux:
term=screen-256color
Vim signale également que les deux instances s'exécutent en mode 256 couleurs (via :set t_Co?
):
- Tmux extérieur:
t_Co=256
- À l'intérieur de tmux:
t_Co=256
Il existe de nombreuses questions similaires concernant le fonctionnement de Vim en mode 256 couleurs dans tmux (la meilleure réponse que j'ai trouvée est ici ), mais je ne pense pas que ce soit mon problème compte tenu des informations ci-dessus.
Je peux dupliquer le problème en dehors de tmux si j'exécute Vim avec le type de terminal défini sur screen-256color
:
$ TERM=screen-256color vim
Alors , qui me fait croire qu'il ya simplement une certaine différence entre les xterm-256color
et screen-256color
capacités du terminal qui provoque la différence de couleur. Ce qui conduit à la question posée dans le titre: qu'est - ce qui, dans les capacités du terminal, fait que les couleurs Vim sont différentes? Je vois les différences entre courir :set termcap
à l' intérieur et à l'extérieur de tmux, mais je suis curieux de savoir quelles variables provoquent réellement la différence de comportement.
Indépendamment de la question précédente, est-il possible que les couleurs Vim soient cohérentes lors de l'exécution à l'intérieur ou à l'extérieur de tmux? Certaines choses que j'ai essayées incluent:
- Définir explicitement le terminal par défaut utilisé par tmux dans
~/.tmux.conf
différentes valeurs (certaines contre l'avis de la FAQ tmux ):
set -g default-terminal "screen-256color" set -g default-terminal "xterm-256color" set -g default-terminal "screen.xterm-256color" set -g default-terminal "tmux-256color"
- Démarrer tmux avec
tmux -2
.
Dans tous les cas, Vim a continué d'afficher différentes couleurs à l'intérieur de tmux.
script
, démarrervim
, quittervim
puis quitterscript
le shell et joindre letypescript
fichier résultant ? Répétez ensuite les mêmes étapes avec à laTERM=screen-256color vim
place.xterm-256color
version (recherchez "38; 5;" dans le fichier), mais je ne peux pas dans lescreen-256color
. Par exemple , là où il y a\e[38;5;81m
dansxterm-256color
(couleur n ° 81 sur la palette 256 couleurs, une nuance bleue du milieu),screen-256color
contient à la\e[34m
place (le bleu standard de la palette 8 couleurs). La question principale est donc pourquoi Vim n'utilise pas la palette de 256 couleurs en cas deTERM=screen-256color
.xterm-256color
version semble imprimer l'écran deux fois, d'abord avec les couleurs héritées puis avec la palette de 256 couleurs. Recherchez par exemple "F1" dans le fichier, vous trouverez deux correspondances dansxterm-256color
, la première avec la\e[34m
couleur, la seconde avec\e[38;5;81m
. Je ne sais pas ce qui se passe ici.set -g default-terminal "screen.xterm-256color"
dans~/.tmux.conf
et recharger la config dans tmux (<Cs>: source fichier ~ / .tmux.conf) a fonctionné pour moi (question fort). thxRéponses:
tmux
ne prend pas en charge la fonction terminfobce
(effacement des couleurs en arrière), quivim
vérifie si vous souhaitez utiliser son modèle de "couleurs par défaut".Cette caractéristique de
tmux
a été mentionnée à plusieurs reprises -la source
J'ai eu le même problème avant. Les commentaires en bleu dans Vim étaient difficiles à lire. Dans
.tmux.conf
je mets ceci:Et dans
.vimrc
:Maintenant, il ressemble à ceci et fonctionne à la fois dans Gnome Terminal et Cygwin:
la source
bg=dark
dans mon vimrc l'a corrigé.$TERM
intérieur et extérieur l'tmux
étaient"xterm-256color"
et le fait de définir explicitement le motif le faisait aussi pour moi. Merci!stterm
dû au fait quexfce4-terminal
tout semblait confortable (les commentaires apparaissant à lacyan
place étaientblue
très difficiles à lire avec un fond sombre). après ce changement, tout fonctionne bien. Mais n'oubliez pas d'ajouterunlet! skip_defaults_vim source $VIMRUNTIME/defaults.vim
au fichier vimrc pour utiliser la coloration syntaxique, etc ...Grâce à l'analyse par @ egmont des couleurs que Vim produisait quand
TERM=screen-256color
, j'ai été inspiré de regarder le schéma de couleurs que Vim utilise dans les deux scénarios.Vim rapporte qu'il utilise le jeu de
default
couleurs dans les deux cas. Je trouvais cela étrange parce que le jeu dedefault
couleurs sur Fedora 25 (/usr/share/vim/vim80/colors/default.vim
) ne semble pas correspondre aux couleurs que je vois réellement quandTERM=xterm-256color
. Si je définis explicitement le schéma de couleurs en utilisant:colorscheme default
quandTERM=xterm-256color
, l'apparence de Vim change en celle quandTERM=screen-256color
. Pour que les couleurs reviennent à ce qu'elles étaient lorsque j'ai démarré Vim pour la première fois, j'ai dû utiliser laron
palette de couleurs. Le progrès!J'ai trouvé une réponse Ask Ubuntu qui suggère que lorsque Vim signale qu'il utilise le jeu de
default
couleurs, cela ne signifie pas nécessairementdefault.vim
mais plutôt un jeu de couleurs spécifique au thème. Comme le souligne la réponse, un thème sombre (que j'utilise) correspond auron
schéma de couleurs, comme je l'ai découvert ci-dessus. (Même si ce message concerne Ubuntu, je suppose que l'OP utilisait GNOME.)J'ai également trouvé une autre question qui semble décrire le même problème que j'ai. Je l'ai rencontré lors d'une recherche avant de poster cette question, mais, pour une raison quelconque, le schéma de couleurs ne m'a pas semblé pertinent.
J'ai fini par faire ce que @LapshinDmitry a fait dans sa réponse et
colorscheme ron
j'ai explicitement mis dans mon~/.vimrc
fichier. Maintenant, que je démarre Vim à l'intérieur ou à l'extérieur de tmux, les couleurs sont identiques. Le seul inconvénient est que si je change jamais mon thème de bureau d'une saveur sombre à une saveur claire, Vim ne passera pas automatiquement au jeu de couleurs de thème clair "par défaut", ce qui est apparemmentpeachpuff
. Je peux vivre avec ça, car je ne changerai probablement jamais mon thème.Je ne vais pas accepter cette réponse car je considère la définition explicite du jeu de couleurs dans ma
~/.vimrc
solution plutôt que la solution. Si quelqu'un peut expliquer pourquoi Vim charge un jeu de couleurs "par défaut" différent en fonction de la valeur deTERM
, je serai heureux d'accepter cette réponse, car je suis plus intéressé à comprendre la cause racine. Je soupçonne que cela a quelque chose à voir avec la façon dont Vim interprète les capacités du terminal entre les deux fichiers terminfo.la source
vim
se comporte de cette façon. Après tout, labce
capacité ne devrait avoir rien à voir avec le nombre de couleurs disponibles.bce
capacité du terminal, 2) s'il est présent, sélectionnez le jeu de couleurs "A", 3) sinon, sélectionnez le jeu de couleurs "B". Je crois que la profondeur de couleur est la même dans les deux cas (c'est-à-dire 256 couleurs, comme let_Co
montre). C'est juste que le schéma de couleurs "B" sur mon système utilise uniquement une palette de 8 couleurs même si 256 couleurs sont possibles (je pense que cela explique ce que vous avez observé dans votre analyse typographique; veuillez me corriger si je me trompe). Rappelez-vous, après avoir exécuté:colorscheme ron
, je vois des séquences d'échappement de 256 couleurs dans la même session Vim.vim
a des décisions de conception vraiment étranges.C'est correct et ça marche pour moi. Essayez-le avec un autre terminal (j'utilise urxvt) pour voir si Gnome Terminal est le problème. La
Vérifiez également
COLORTERM
(le mien est défini surrxvt
) etunset TERMCAP
.la source
TERM
estrxvt-unicode-256color
) en utilisant une~/.Xdefaults
couleur différente appropriée et malheureusement toujours observée à l'intérieur et à l'extérieur de tmux. Pour le scénario gnome-terminal,COLORTERM
esttruecolor
etTERMCAP
est vide à l'intérieur et à l'extérieur de tmux. Pour le scénario urxvt,COLORTERM
est à l'rxvt-xpm
extérieur et à l'truecolor
intérieur de tmux, tandis qu'ilTERMCAP
est vide à l'intérieur et à l'extérieur de tmux.:help xterm-true-color
ou essayez avec une configuration Vim plus par défaut.termguicolors
dans mes rapports.vimrc
et dans les deux cas. Je vais regarder la rubrique d'aide que vous avez référencée; Merci!:set termguicolors?
notermguicolors
Pour ma propre référence plus tard, lorsque je goûterai sans aucun doute à Google cette configuration de ma prochaine machine.
Utilisez ces instructions pour obtenir les fichiers binaires et les DLL nécessaires dans le CHEMIN de Git bash:
https://blog.pjsen.eu/?p=440
Utilisez ces commandes pour configurer:
la source