2010-07-30 3 views
15

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

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

ответ

23

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

Я думаю, что вам лучше всего, чтобы загрузить один ColorScheme в .vimrc, а другой в .gvimrc (или в вашем случае, просто не загрузить ColorScheme в .vimrc вообще). Цвета .gvimrc будут загружаться только при запуске GUI-версии 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 

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

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

:help has() 
:help termcap 
:help termcap-colors 
+0

Спасибо за это, особенно за '.gvimrc' - я не знал, что он существует. – Amadan

5

Недавно я сделал что-то вроде этого, чтобы использовать тот же .vimrc на всех наших системах Linux, но использовать шрифт моноширинный Ubuntu, если я бегу на 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 здесь, чтобы попробовать, но я думаю, это точно.

+2

FYI: 'uname -s' распечатать' Darwin' на моем mac. – sdolan

Смежные вопросы