Jak sprawić, by koloryzowana kolorystyka działała z terminalem gnome, tmux i vim?

25

Jest wiele pytań na ten temat, ale dzieje się tak, ponieważ istnieje wiele zmiennych. Musiałem zebrać instrukcje z wielu stron, zanim zacząłem działać.

Po pierwsze, nie mogłem łatwo ustawić 16 słonecznych definicji kolorów w terminalu gnome (zrobiłem to ręcznie / klikając tylko, aby zdać sobie sprawę, że nie mam poprawnej kolejności / mapowania). Po ustaleniu, że przeprowadziłem się ...

Potem miałem słoneczne kolory działające w vim OK, ale było pewne dziwne czarne tło pojawiające się w niektórych wyróżnieniach. Gdy to naprawiłem, przeszedłem ...

Potem zdałem sobie sprawę, że vim poszedł v. Wonky po uruchomieniu w tmux. Jest to szeroko dyskutowane, ale bardzo niewiele odpowiedzi (które głównie mówią o ustawieniu TERMsię xterm-256colors) działało dla mnie. W końcu to też naprawiłem.

Solarized to bardzo ładna paleta (chociaż przyciemniłem najciemniejszy kolor podstawowy i rozjaśniłem najjaśniejszy, ponieważ wolę wyższy kontrast i znalazłem „biały” tmux zdecydowanie zbyt żółty na moim skalibrowanym ekranie - prawdopodobnie dobrze na typowym nieskalibrowanym ekranie laptopa, ponieważ ” zwykle są zbyt niebieskie!), więc zamieszczam to pytanie wraz z odpowiedzią, aby podzielić się wynikami mojej nauki.

artfulrobot
źródło
Używam xterm-256color (nie terminal GNOME), tmux i vim i nie pamiętam, aby skakać gdziekolwiek w pobliżu tak wielu obręczy. Jedyne, co musiałem zrobić, to solaryzować terminal (xterm używa XResources zamiast profili), co było niewielkim utrudnieniem do zorientowania się, dodania solarized.vimi wszystko było gotowe .
jw013

Odpowiedzi:

24

Solarized daje bardzo specyficzne kolory. Tak naprawdę nie można osiągnąć tych kolorów w standardowej palecie 256 kolorów . Jedynym sposobem na osiągnięcie tego jest ustawienie dokładnych kolorów w emulatorze terminali, a następnie aplikacje myślą, że używają standardowych 16 kolorów (8 + 8 jasności), ale zostały one dokładnie odwzorowane na paletę Solarized.

Terminal Gnome nie zapewnia bardzo łatwego sposobu eksportowania / importowania palet lub profili, ale możesz to zrobić za pomocą tego skryptu 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"

Uwaga tutaj przesłoniłem najciemniejsze i najjaśniejsze kolory Solarized. Możesz użyć oryginałów, jeśli chcesz, zgodnie z komentarzem.

Wystarczająco dobry. Teraz zainstaluj plik Solarized vim colors, umieszczając ten plik w ~.vim/colors/solarized.vim.

Teraz możesz powiedzieć Vimowi, aby używał tego schematu kolorów colo solarized. Ale to nie dość pracy i musiałem powiedzieć Vima używać pallete 16 kolorów set t_Co=16. Wsadziłem oba do siebie~/.vimrc pliku.

Teraz kolory vima działały, ale nie, jeśli działały w tmuxie.

Ten następny fragment jest bardzo mylący. Większość porad mówi o ustawianiu TERMpoza tmux naxterm-256colors , ale kiedy to zrobię, tmux nawet się nie uruchomi. Zdezorientowało mnie też: czy solaryzacja nie mówi, że paleta 256 kolorów jest złym przybliżeniem? Cóż, to jest mylące, a poza tym nie działało, więc potrzebowałem innego rozwiązania:

Utwórz plik /tmp/foozawierający:

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

Następnie zainstaluj to za pomocą sudo tic /tmp/foo

Wreszcie alias tmuxw następujący sposób:

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

Teraz mam dokładnie odpowiednie kolory w terminalu, w vimie i w vim-inside-tmux. Uwaga -2opcja nakazuje tmuxużycie palety 256 kolorów, co jest naprawdę mylące, ponieważ zmienne env wydaje się mówić to inaczej ... Ja naprawdę nie wiem, i obawiam się, że tak naprawdę nie obchodzi, że uczenie się wspinać Krzywa, ponieważ mam teraz piękny kolorowy terminal, który po prostu działa.

artfulrobot
źródło
set t_Co=16zrobił dla mnie lewę. Przed ustawieniem tej opcji podświetlanie składni w ogóle nie działało.
Koraktor
2
To zabawne, ile pracy musisz zrobić, aby 16 kolorów działało w edytorze tekstu!
Uwaga: odkrywam, że w Gnome Terminal 3.18.3 (w Ubuntu 16.04) to już nie działa - nie wydaje się akceptować kolorów, a użycie t_Co = 256 w vimie daje lepsze wyniki.
artfulrobot
9

Znalazłem również ten projekt:

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

Dzięki za wskazówki :-)

DavidG
źródło
1
Tak, tak i tak! Użyj tego skryptu, nie przejmuj się całym hakowaniem w zaakceptowanej odpowiedzi. To „po prostu działa”.
LondonRob
Wspaniale! To jest o wiele lepsze. Dziękuję Ci.
wchargin
W niektórych instalacjach działa. Na niektórych jest zbyt niebieski.
JohnMudd