Le fond de Colorscheme n'est pas correct dans le terminal

13

J'ai importé la palette et la palette de couleurs solarisées. Mon terminal a les bonnes couleurs et l'arrière-plan, gvim a les bonnes couleurs et l'arrière-plan, mais vim a un arrière-plan de couleur incorrecte. Le texte est tout à fait correct, mais l'arrière-plan semble être d'un noir pur.

Ceci est une comparaison de Terminal, GVim et Vim

Voici mon .vimrc:

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Si quelqu'un a des suggestions sur ce qui pourrait en être la cause, je serais très obligé. J'exécute xubuntu avec le terminal par défaut.

Je dois également mentionner que l'option lumière donne un fond très jaune à Vim.

Oberdiear
la source
1
Par «[mon] terminal a les couleurs et l'arrière-plan corrects», voulez-vous dire que vous avez suivi les conseils spécifiques concernant Vim dans le terminal?
Andrew
2
J'ai suivi les conseils, @Andrew. Merci quand même.
Oberdiear
@Oberdiear Le conseil auquel Andrew renvoie vous explique que vous devez configurer votre terminal pour utiliser des couleurs solarisées et ne pas utiliser l' g:solarized_termcolors=256option. Si vous êtes heureux d'utiliser des couleurs solarisées dans votre terminal, cette méthode fonctionne beaucoup mieux. Le texte de votre question implique que vous avez configuré votre terminal pour utiliser des couleurs solarisées (bien que la capture d'écran que vous affichez ne me ressemble pas), alors dans ce cas, pourquoi utilisez-vous le g:solarized_termcolors=256paramètre?
Rich
Quel terminal utilisez-vous? J'ai ce script pour gnome-terminal.
wchargin
@ Rich, je suppose que je n'ai pas la palette correctement configurée. Savez-vous (ou quelqu'un d'autre) comment configurer correctement cela pour Xfce Terminal?
Oberdiear

Réponses:

10

Il y a deux raisons pour lesquelles je pense que cela peut se produire:

  1. Le jeu de couleurs solarisé que vous utilisez ne déclare pas ctermfget ctermbgpour aucune des fonctionnalités que vous souhaitez mettre en évidence. Essayez ce schéma de couleurs , il devrait être essentiellement le même à l'intérieur de votre terminal et de gvim, si tel est le cas, vous devrez peut-être envisager d'utiliser un schéma de couleurs qui déclare ctermfget ctermbg.

  2. Vous devrez peut-être vous assurer que votre émulateur de terminal prend en charge les couleurs que vous essayez d'afficher:


Notez que ces deux choses peuvent se produire en même temps, mais il est difficile de diagnostiquer cela sans plus d'informations sur votre système.

El Developer
la source
Le desert256 fonctionne bien, mais je ne suis pas un grand fan. Je crois que la TERMvariable est incorrecte, mais je ne sais pas comment la changer.
Oberdiear
2
J'ai installé ncurses-term. J'ai ensuite exécuté la commande. Après l'avoir exécuté, tout le texte devient gris et l'arrière-plan est noir.
Oberdiear
1
Ce devrait être export TERM=xterm+256color, PAS "couleur s " (pluriel). En outre, je crois que cela devrait être xterm-256color, PAS "** + ** 256color; mais je peux me tromper spécifiquement sur son utilisation avec solarized. Selon cette réponse ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward
export TERM=xterm+256colorsur OSX je reçoiszle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross
J'ai eu ce problème exact et j'ai export TERM=xterm+256colorsaidé Vim Solarized à détecter et à utiliser la couleur d'arrière-plan exacte comme celle de mon terminal.
Shyam Habarakada
5

Bonnes nouvelles, tout le monde. @Tom et @Rich m'ont mis sur la bonne voie. J'ai trouvé une solution fournie ici . Je mets mon .vimrc au plus simple

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

Cela semble tout arranger. Les couleurs ne semblent pas aussi brillantes dans les exemples de polices , mais cela pourrait très bien être juste moi. Pour tous ceux qui veulent utiliser le schéma de couleurs Solarized et utiliser xfce4-terminal, le simple fait de changer le terminalrc et le .vimrc semblait résoudre mes principaux problèmes. Merci à tous pour votre aide!

Oberdiear
la source
1
Vous ne devriez pas avoir besoin de la set t_Coligne dans votre vimrc: Vim peut lire cette valeur depuis le terminal (le paramètre 't_Co'semble être un peu un culte du fret Vim: beaucoup de gens en ligne recommandent de le faire sans vraiment comprendre les problèmes qu'ils tentent de résoudre .)
Rich
Je vais juste dire "screen" et "tmux" - ces outils modifient la variable $ TERM afin que vim ne puisse pas lire les informations dont il a besoin.
NieDzejkob
@NieDzejkob Vous pouvez utiliser un multiplexeur de terminaux tout en conservant un terminal correctement configuré.
Rich
@Rich vous dérange d'expliquer quelle est la bonne solution du côté du terminal? J'utilise tmux avec $TERM=screenet le réglage t_Co=16résout en effet les problèmes visuels pour moi, mais j'aimerais savoir quelle est la relation, en premier lieu.
ffledgling
@ffledgling J'adorerais. Cela pourrait nécessiter un peu de va-et-vient, alors venez me rejoindre dans le chat .
Rich
4

Je suppose que c'est un problème de compatibilité de ceci colorschemeavec le terminal. Le plugin csaproxrésout miraculeusement un tas de ces problèmes.

Synopsis:

Il est difficile de trouver des thèmes de couleurs pour le terminal Vim. La plupart des thèmes de couleurs sont écrits pour ne prendre en charge que GVim et ne fonctionnent pas du tout dans le terminal Vim.

Ce plugin permet aux schémas de couleurs GVim uniquement de fonctionner dans le terminal Vim, tant que le terminal prend en charge 88 ou 256 couleurs - et la plupart le font de nos jours. Cela ne nécessite généralement aucune interaction de l'utilisateur (mais consultez l'aide pour savoir quoi faire si les choses ne fonctionnent pas simplement). Après avoir installé ce plugin avec bonheur, chaque fois que vous l'utiliserez, :colorschemeil fera sa magie et fera fonctionner le programme de couleurs.

Liens vers le plugin:

Jonatas Eduardo
la source
1
Ceci est un plugin utile, mais n'aidera pas ici, car le schéma de couleurs solarisé fait déjà des efforts considérables pour travailler dans le terminal Vim sous des terminaux 16 couleurs et 256 couleurs.
Rich
4

Le schéma de couleurs terminal-Vim solarisé peut fonctionner de deux manières différentes.

  1. Un mode 16 couleurs: Solarized ne contient que 16 couleurs, donc dans ce mode, vous configurez votre terminal pour utiliser les couleurs solarized comme ses 16 couleurs, et le schéma de couleurs Vim les utilise simplement. Ainsi, par exemple, le schéma de couleurs Vim demandera la couleur du terminal "1", et le terminal l'affichera comme la couleur hexadécimale # dc322f.

  2. Un mode 256 couleurs, où il sélectionne les correspondances les plus proches pour ses 16 couleurs dans une palette de 256 couleurs.

L'ancienne méthode est fortement recommandée par l'auteur (et par moi), et il semble que vous soyez heureux d'utiliser cette méthode car vous déclarez que votre "terminal a les couleurs et l'arrière-plan corrects".

Cependant, il apparaît sur votre capture d'écran que votre terminal n'a pas les bonnes couleurs définies. (Le blanc n'est pas une couleur dans l'ensemble solarisé, et bien que je ne l'aie pas repéré, l'autre couleur de texte dans la capture d'écran ne me semble pas comme étant "Violet" Solarisé (# 6c71c4).)

Si vous supprimez le paramètre de lignes t_Coet g:solarized_termcolorsde votre vimrc * et configurez correctement les couleurs de votre terminal, vous devriez constater que le schéma de couleurs solarisé 16 couleurs commencera à fonctionner.

* Ces lignes basculent en mode solaire en utilisant son mode 256 couleurs (moins fidèle). Cela devrait également fonctionner, (je soupçonne que @Jubal a raison de suggérer que BCE est le problème ici ), mais le mode 16 couleurs est préférable, sauf si vous ne voulez explicitement pas utiliser de panneaux solaires dans votre terminal.

Riches
la source
Je pense que vous êtes complètement sur la bonne voie. Je pense que la palette n'est pas installée correctement. Pourriez-vous me guider à travers le processus? J'apprécie toute votre aide, @Rich.
Oberdiear
1
Il semble que votre premier lien soit maintenant mort.
akozi
@azoki Merci de m'avoir prévenu. On dirait que le site Solarized est en (re) construction. J'ai changé le lien pour pointer vers le dépôt github pour le moment.
Rich
3

On dirait que vous avez trouvé votre réponse. J'ai eu ce même problème et rien au-dessus n'a fonctionné. Ce qui a fonctionné pour moi, c'était d'utiliser l' altercationterminalrc , par opposition à celle de sgerrand .

Ma pertinence vimrcest tout simplement:

syntax enable
set background=dark
colorscheme solarized

J'espère que cela aide quelqu'un!

ohsonice
la source
1

C'est donc ce qui fonctionne pour moi (sur tous les terminaux que j'utilisais auparavant - xterm, konsole, gnome-terminal, iterm2, roxterm - sur Linux et OS X, également avec gvim et macvim):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif
Jubal
la source
Cela a causé un problème similaire à la définition de t_Co = 16. Je suis assez certain que j'ai un problème avec la palette, mais je dois encore le comprendre.
Oberdiear
Quel émulateur de terminal utilisez-vous? Si je me souviens bien, la configuration solarisée intégrée de konsole n'est pas entièrement utilisable et il faut utiliser les paramètres du dépôt solarisé d'origine…
Jubal
J'utilise Xfce Terminal.
Oberdiear
Je pense que je l'ai fait fonctionner: essayez de forcer TERM à xterm-256color, tout en utilisant le préréglage solarisé des préférences du terminal, pas du référentiel git solarized xfce-terminal. Ceci avec le hack BCE ci-dessus a fait l'affaire pour xfce4-terminal pour moi.
Jubal
(Il y a toujours quelque chose de louche avec l'émulation de terminal et le rendu de police sous-jacents , et je suppose que je me suis souvenu pourquoi je suis retourné à l'ancien xterm sous Linux…)
Jubal
0

Cela a été difficile de travailler (j'utilise le terminal Vim dans Linux Mint), et malheureusement je n'ai pas écrit les détails de tout ce que j'ai fait. Voici la section pertinente de mon vimrc:

syntax enable
set background=dark
set t_Co=16
colo solarized

Il peut également être utile de consulter ce projet sur GitHub .

À M
la source
set t_Co = 16 fait que les couleurs sont radicalement différentes de ce qui est attendu. J'utilise également le terminal Xubuntu par défaut est Xfce-Terminal.
Oberdiear
@Oberdiear Si la définition de t_Co = 16 affecte les couleurs de cette manière (avec la variable g: solarized_termcolors non définie), cela signifie que les couleurs de votre terminal ne sont pas configurées correctement pour utiliser solarized. Comment définissez-vous les couleurs de votre terminal?
Rich
0

Ce qui a fonctionné pour moi, c'est de supprimer cette partie de vos paramètres

if has('gui_running')
   set background=dark
else
   set background=dark
endif

J'utilise un terminal xfce4

nisennenmondai
la source
0

J'ai aussi eu ce problème avec xfce-terminal.

Après un peu de recherche, j'ai découvert ce bug : tout ce que vous définissez comme$TERM dans votre terminal XFCE est silencieusement ignoré.

Je pense que c'est vraiment un bug de l' ancienne bibliothèque VTE sous-jacente (et non maintenue) que le terminal XFCE (toujours basé sur GTK + 2) utilise. Le passage à un terminal GTK + 3, qui utilise implicitement la nouvelle bibliothèque VTE , a résolu le problème.

ntd
la source