Как получить соляризованную цветовую схему, работающую с gnome-terminal, tmux и vim?

25

Есть много вопросов по этому поводу, но это потому, что есть так много переменных. Мне пришлось собрать воедино инструкции со многих сайтов, прежде чем я начал работать.

Во-первых, я не мог легко настроить 16 соляризованных определений цвета в gnome-Terminal (я сделал это вручную / щелкнув только, чтобы понять, что я не получил правильный порядок / отображение). Как только я исправил это, я пошел дальше ...

Тогда у меня были соляризованные цвета, работающие в vim OK-ish, но были некоторые странные черные фоны, появляющиеся при определенной подсветке. Как только я это исправил, я пошел дальше ...

Затем я понял, что vim go v. Wonky однажды бегает внутри tmux. Это массово обсуждается, но очень немногие из ответов (которые в основном говорят о создании TERMв xterm-256colors) работал для меня. В конце концов я тоже это исправил.

Соляризация - очень хорошая палитра (хотя я затемнил самый темный базовый цвет и осветил самый светлый, так как я предпочитаю более высокий контраст, и обнаружил, что «белый» tmux слишком желтый на моем откалиброванном экране - вполне нормально на обычном некалиброванном экране ноутбука, поскольку они « обычно слишком синий!), поэтому я публикую этот вопрос с ответом, чтобы поделиться результатами своего обучения.

artfulrobot
источник
Я использую xterm-256color (не терминал GNOME), tmux и vim и не помню, чтобы мне приходилось прыгать где-нибудь поблизости от этого количества обручей. Единственное, что мне нужно было сделать - это соляризовать терминал (xterm использует XResources вместо профилей), что было немного затруднительно, чтобы добавить, solarized.vimи я был готов .
jw013

Ответы:

24

Соляризация дает очень специфические цвета. Вы не можете достичь этих цветов в стандартной 256-цветовой палитре . Единственный способ добиться этого - настроить точные цвета в эмуляторе терминала, тогда приложения будут думать, что они используют только стандартные 16 цветов (8 + 8 яркостей), но они точно сопоставлены с палитрой Solarized.

Терминал Gnome не предоставляет очень простой способ экспорта / импорта палитр или профилей, но вы можете сделать это с помощью скрипта 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"

В северном направлении здесь я переопределил самые темные и самые светлые цвета Solarized. Вы можете использовать оригиналы, если хотите, как прокомментировано.

Достаточно хорошо. Теперь установите файл Solarized vim colors , поместив этот файл в ~.vim/colors/solarized.vim.

Теперь вы можете сказать Vim использовать эту цветовую схему с colo solarized. Но это не совсем сработало, и мне пришлось сказать Vim использовать 16-цветную палитру set t_Co=16. Я сунул оба из них в мой ~/.vimrcфайл.

Теперь Vim Colours работает, но не в том случае, если он работает внутри tmux.

Этот следующий бит очень сбивает с толку. Большинство советов говорит об установке TERMвне tmux xterm-256colors, но когда я это сделал, tmux даже не запустился. Меня это тоже смутило: разве соляризация не говорит, что 256-цветная палитра - плохое приближение? Ну, это сбивает с толку, и в любом случае, это не сработало, поэтому мне нужен был другой путь вперед:

Создайте файл, /tmp/fooсодержащий:

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

Затем установите это с sudo tic /tmp/foo

Наконец, псевдоним tmuxвыглядит следующим образом:

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

Теперь я получаю абсолютно правильные цвета в терминале, в vim и в vim-inside-tmux. В северном направлении -2опция указывает tmuxиспользовать 256 цветовую палитру, которая действительно запутанной , поскольку переменные Env , казалось бы , говоря это иначе ... Я действительно не знаю, и я боюсь , что я не очень заботятся , чтобы подняться , что обучение кривая, потому что теперь у меня есть красивый цветной терминал, который просто работает.

artfulrobot
источник
set t_Co=16сделал трюк для меня. До установки этой опции подсветка синтаксиса вообще не работала.
Koraktor
2
Забавно, сколько работы нужно сделать, чтобы заставить 16 цветов работать в текстовом редакторе!
Примечание: я обнаружил, что в Gnome Terminal 3.18.3 (в Ubuntu 16.04) это больше не работает - кажется, не принимает цвета, и использование vim's t_Co = 256 дает лучшие результаты.
artfulrobot
9

Я также нашел этот проект:

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

Спасибо за советы :-)

DavidG
источник
1
Да да и да! Используйте этот скрипт, не беспокойтесь обо всем взломе в принятом ответе. Это "просто работает".
LondonRob 15.07.15
Замечательно! Это намного лучше. Спасибо.
wchargin
На некоторых установках это работает. На некоторых это слишком синий.
JohnMudd