Comment faire fonctionner le jeu de couleurs solarisé avec gnome-terminal, tmux et vim?

25

Il y a beaucoup de questions à ce sujet, mais c'est parce qu'il y a tellement de variables. J'ai dû rassembler les instructions de nombreux sites avant de commencer à travailler.

Tout d'abord, je ne pouvais pas facilement configurer les 16 définitions de couleurs solarisées dans gnome-terminal (je l'ai fait à la main / en cliquant seulement pour réaliser que je n'avais pas obtenu l'ordre / la cartographie correcte). Une fois que j'ai corrigé cela, je suis parti ...

Ensuite, j'avais des couleurs solarisées fonctionnant dans vim OK-ish, mais il y avait quelques arrière-plans noirs étranges apparaissant dans certains surlignages. Une fois que j'ai corrigé cela, j'ai continué ...

Puis j'ai réalisé que vim était devenu v. Wonky une fois exécuté dans tmux. Ceci est massivement débattu, mais très peu des réponses (qui disent surtout sur la mise TERMà xterm-256colors) a fonctionné pour moi. J'ai finalement corrigé cela aussi.

Solarized est une très belle palette (même si j'ai assombri la couleur de base la plus foncée et éclairci la plus claire car je préfère le contraste plus élevé et j'ai trouvé le `` blanc '' de tmux beaucoup trop jaune sur mon écran calibré - très bien sur un écran d'ordinateur portable non calibré typique car ils '' re habituellement trop bleu!), donc je poste cette question avec sa réponse pour partager les résultats de mon apprentissage.

artfulrobot
la source
J'utilise xterm-256color (pas le terminal GNOME), tmux et vim et je ne me souviens pas avoir eu à parcourir n'importe où près de ces nombreux cerceaux. La seule chose que je devais faire était de solariser le terminal (xterm utilise XResources au lieu de profils), ce qui était un peu difficile à comprendre, à ajouter solarized.vimet j'étais prêt.
jw013

Réponses:

24

Solarized donne des couleurs très spécifiques. Vous ne pouvez pas vraiment obtenir ces couleurs dans une palette de 256 couleurs standard . La seule façon d'y parvenir est de configurer les couleurs exactes dans votre émulateur de terminal, puis les applications pensent qu'elles n'utilisent que 16 couleurs standard (8 + 8 brights), mais celles-ci ont été correctement mappées à la palette Solarized.

Le terminal Gnome ne fournit pas un moyen très facile d'exporter / importer des palettes ou des profils, mais vous pouvez le faire avec ce script bash:

#!/bin/sh
DARK_BG='#000014141A1A'
# original: DARK_BG='#00002B2B3636'
LIGHTEST='#FFFFFBFBF0F0'
# original: LIGHTEST='#FDFDF6F6E3E3'

gconftool-2 --set "/apps/gnome-terminal/profiles/Default/use_theme_background" --type bool false
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/use_theme_colors" --type bool false
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/palette" --type string "#070736364242:#D3D301010202:#858599990000:#B5B589890000:#26268B8BD2D2:#D3D336368282:#2A2AA1A19898:#EEEEE8E8D5D5:$DARK_BG:#CBCB4B4B1616:#58586E6E7575:#65657B7B8383:#838394949696:#6C6C7171C4C4:#9393A1A1A1A1:$LIGHTEST"
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "$DARK_BG"
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/foreground_color" --type string "#65657B7B8383"

Nb. ici, j'ai remplacé les couleurs les plus foncées et les plus claires de Solarized. Vous pouvez utiliser les originaux si vous le souhaitez, comme commenté.

Assez bien. Installez maintenant le fichier de couleurs Solaris vim en plaçant ce fichier dans ~.vim/colors/solarized.vim.

Vous pouvez maintenant dire à Vim d'utiliser ce jeu de couleurs avec colo solarized. Mais cela n'a pas vraiment fonctionné et j'ai dû dire à Vim d'utiliser une palette de 16 couleurs set t_Co=16. J'ai coincé les deux dans mon ~/.vimrcdossier.

Maintenant, les couleurs vim fonctionnaient, mais pas si elles fonctionnaient à l'intérieur de tmux.

Ce morceau suivant est très déroutant. La plupart des conseils concernent la configuration de TERMtmux en dehors de xterm-256colors, mais quand je l'ai fait, tmux ne démarre même pas. Cela m'a aussi troublé: la solarisation ne dit-elle pas que la palette de 256 couleurs est une mauvaise approximation? Eh bien, c'est déroutant, et de toute façon, cela ne fonctionnait pas, alors j'avais besoin d'une autre voie à suivre:

Créez un fichier /tmp/foocontenant:

xterm-16color|xterm with 16 colors,
    colors#16, use=xterm,

Ensuite, installez-le avec sudo tic /tmp/foo

Enfin, alias tmuxcomme suit:

alias tmux='TERMINFO=/usr/share/terminfo/x/xterm-16color TERM=xterm-16color tmux -2'

J'obtiens maintenant exactement les bonnes couleurs dans le terminal, dans vim et dans vim-inside-tmux. Nb. l' -2option indique tmuxd'utiliser une palette de 256 couleurs, ce qui est vraiment déroutant car les variables env semblent le dire autrement ... Je ne sais vraiment pas, et je crains de ne pas vraiment m'intéresser à cet apprentissage courbe parce que j'ai maintenant une belle borne colorée qui fonctionne.

artfulrobot
la source
set t_Co=16a fait l'affaire pour moi. Avant de définir cette option, la mise en évidence de la syntaxe ne fonctionnait pas du tout.
Koraktor
2
C'est amusant de voir combien de travail vous devez faire pour que 16 couleurs fonctionnent dans un éditeur de texte!
Remarque: je trouve que dans Gnome Terminal 3.18.3 (dans Ubuntu 16.04) cela ne fonctionne plus - ne semble pas accepter les couleurs et l'utilisation de t_Co = 256 de vim donne de meilleurs résultats.
artfulrobot
9

J'ai aussi trouvé ce projet:

https://github.com/sigurdga/gnome-terminal-colors-solarized

Merci pour les conseils :-)

DavidG
la source
1
Oui oui et oui! Utilisez ce script, ne vous embêtez pas avec tout le piratage dans la réponse acceptée. Cela "fonctionne tout simplement".
LondonRob
Magnifique! C'est tellement mieux. Merci.
wchargin
Sur certaines installations, cela fonctionne. Sur certains, c'est trop bleu.
JohnMudd