Я разделяю файл конфигурации VIM между несколькими компьютерами. Однако я хочу, чтобы некоторые настройки были специфичными для определенных компьютеров.
Например, размеры шрифта на ноутбуке с высоким разрешением должны отличаться от размера рабочего стола с низким разрешением. И что еще более важно, я хочу, чтобы gVIM в Windows вел себя более Windowsy, а MacVim в OSX - maccy, а gVIM в Linux вел себя так, как всегда. (Это может быть странное чувство, но я очень привык переключать психические режимы при переключении ОС)
Есть ли способ сделать несколько настроек в .vimrc
зависимости от машины или ОС?
vim
operating-systems
vimrc
dependencies
bastibe
источник
источник
has('gui_running')
если вам нужно различать режим tty и режим GUI.has('mac')
верно ли это для всех Mac или только для Mac с предустановленной OS-X. Смотрите:help feature-list
полный список.has('unix')
. Моя ошибка.has("mac")
. Я предполагаю, что они использовали какой-то патч, который на самом деле заставляет работать функциональный тест. Если вы полагаетесь наhas("mac")
test, сделайте несколько тестов, чтобы убедиться, что они поддерживаются вашим vim.Чтобы проверить конкретную машину, вы можете проверить вывод
hostname
команды. Например,Вы также можете проверить значение доступных переменных среды:
$DISPLAY
Переменная также может быть полезным.источник
system('hostname')
былmachine.mycompany.com\n
, поэтому мне пришлось изменить команду замены наsubstitute(system('hostname'), '\.\_.*$', '', '')
.У меня есть этот фрагмент в моем
vimrc
:Это просто выполняется,
source $HOME/.$HOSTNAME.vimrc
если он существует. Я использовалhostname()
и конкатенацию, вы также можете использовать более сжатые,expand('$HOME/.$HOSTNAME.vimrc')
если вы знаете, что$HOSTNAME
всегда установлено.источник
Предыдущий ответ об обнаружении ОС не обнаруживает OS X в MacVim для меня (и ни один из них не использует,
has("macunix")
как указано в документации).Вот что я использую, чтобы отличить Windows от OS X:
Обратите внимание, что
has("win32")
у меня сработало даже в 64-битном Vim на 64-битной Windows.Вы также можете использовать аналогичные тесты
uname
внутриif has("unix")
блока, чтобы отличить другие варианты Unix. Просто запуститеuname
илиuname -a
из командной строки, чтобы увидеть, что вам нужно сравнитьs:uname with
. Смотрите также,:h matchstr()
если вам нужно сравнить только часть вывода uname.источник
Из-за большого количества компьютеров перечисление всех имен хостов
.vimrc
может стать утомительным, возможно, будет легче различить разные варианты Unix:источник
Вы можете просто поместить специфичные для ОС вещи в пользовательский .gvimrc для каждой машины и использовать общий .vimrc на всех них. Оба файла читаются при запуске GVim, только .vimrc читается при запуске Vim без графического интерфейса пользователя.
источник
Что касается разделения между Linux и Windows - вы можете просто ввести различные настройки
.vimrc
и_vimrc
, соответственно.источник