Условная схема цветов в .vimrc - PullRequest
17 голосов
/ 30 июля 2010

Я использую vim и MacVim. У меня есть 256-цветная схема цветов, которая мне нравится для моего MacVim, но если я загружаю ее в обычный vim, она, очевидно, не работает (вместо этого я получаю блики). Я хотел бы иметь возможность использовать одну и ту же конфигурацию vim на всех моих системах, поэтому:

Есть ли способ проверить размер палитры в .vimrc и соответственно установить одну из двух цветовых схем? Если это невозможно, тогда проверка MacVim и vim также будет в порядке.

Ответы [ 2 ]

25 голосов
/ 30 июля 2010

У вас есть несколько вариантов.

Я думаю, что вам лучше всего загружать одну цветовую схему в .vimrc, а другую в .gvimrc (или в вашем случае, просто не загружайте цветовую схему в .vimrc вообще). Цветовая схема .gvimrc будет загружена только при использовании версии MacVim с графическим интерфейсом.

Если вы не хотите разбивать свою конфигурацию на несколько файлов, вы также можете использовать условное выражение, подобное этому, в .vimrc:

if has('gui_running')
    colorscheme mycrazycolors
endif

Наконец, если вы действительно хотите узнать количество доступных цветов, вы можете проверить настройку t_Co:

:echo &t_Co

t_Co пусто в версии MacVim с графическим интерфейсом, так что вы, вероятно, все еще захотите использовать вариант has(). На самом деле, по умолчанию .vimrc делает нечто подобное, чтобы определить, когда включать подсветку синтаксиса:

if &t_Co > 2 || has("gui_running")
    syntax on
endif

Для полноты картины я должен упомянуть, что вы также можете расширить свой файл цветовой схемы, включив в него разумные настройки для цветных терминалов. Однако это довольно трудоемкий процесс, и может быть проще просто переключиться на терминальное приложение, поддерживающее больше цветов.

См. Эти темы для получения дополнительной информации:

:help has()
:help termcap
:help termcap-colors
5 голосов
/ 29 июня 2012

Недавно я сделал что-то подобное, чтобы использовать один и тот же .vimrc на всех наших системах Linux, но использовать шрифт Ubuntu monospace, если я работал на Ubuntu:

if (match(system("cat /etc/issue"), "Ubuntu") != -1)
    set guifont=Ubuntu\ Mono\ 13
else
    set guifont=Monospace\ 11
endif

Мне кажется, что вы могли бы сделать что-то похожее, чтобы обнаружить, работаете ли вы на Mac или иным образом:

if (match(system("uname -s"), "Darwin") != -1)
    colorscheme macscheme
else
    colorscheme otherscheme
endif

Обратите внимание, что я использовал http://en.wikipedia.org/wiki/Uname, чтобы узнать, какие отчеты об uname на OS X. У меня нет Mac, который можно было бы здесь попробовать, но я думаю, что это точно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...