Я совместно использую свой конфигурационный файл VIM между несколькими компьютерами. Однако я хочу, чтобы некоторые настройки были специфичны для определенных компьютеров.
Например, размеры шрифта на ноутбуке высокого разрешения должны отличаться от низкого-res рабочего стола. И что еще более важно, я хочу, чтобы gVIM в Windows вел себя больше windowsy и MacVim на OSX для поведения, больше maccy и gVIM на Linux, чтобы просто вести себя как он всегда делают. (Который мог бы быть странным чувством, но я очень используюсь для переключения умственных режимов при переключении Ose),
Есть ли способ установить несколько настроек в .vimrc
машина - или зависимый от операционной системы?
Обнаружение ОС в .vimrc
:
if has('win32')
......
elseif has('mac')
......
elseif has('unix')
......
endif
Для тестирования на конкретную машину можно протестировать вывод hostname
команда. Например,
let hostname = substitute(system('hostname'), '\n', '', '')
if hostname == "tigger"
...
elseif hostname == "pooh"
...
endif
Вы могли также протестировать значение доступных переменных среды:
if $HOSTNAME == "tigger"
...
elseif $HOSTNAME == "pooh"
...
endif
$DISPLAY
переменная может также быть полезной.
Предыдущий ответ об обнаружении ОС не обнаруживает OS X в MacVim для меня (и ни один не делает использование has("macunix")
поскольку документация предлагает, чтобы она была должна).
Вот то, что я использую для distiguish между Windows и OS X:
if has("win32")
"Windows options here
else
if has("unix")
let s:uname = system("uname")
if s:uname == "Darwin\n"
"Mac options here
endif
endif
endif
Отметьте это has("win32")
работавший для меня, даже в Vim на 64 бита в Windows на 64 бита.
Вы могли также использовать подобные тесты uname
в if has("unix")
блок для различения других ароматов Unix. Просто выполненный uname
или uname -a
от командной строки для наблюдения то, что необходимо сравнить s:uname with
.См. также :h matchstr()
если необходимо сравнить просто часть вывода uname.
С большим количеством машин, перечисляя все имена хостов в .vimrc
может стать утомительным, могло бы быть легче различать различные разновидности Unix:
" set font when running on Solaris
if (match(system('uname -s'), 'SunOS') >= 0)
set guifont=* " fixes "E665: Cannot start GUI, no valid font found"
endif