20

Я использую Vim на OS X и Windows, с почти одинаковой конфигурацией.

Я хотел бы иметь возможность использовать один и тот же .vimrc в двух операционных системах, но есть пара вещей, которые мне нужно настроить по-разному.

Что я хотел бы добавить в мой файл .vimrc :

:if <windows>
  "some windows-specific settings here
:elseif <os x>
  "some os x-specific settings here
:endif

Но я не знаю, что использовать для <windows> и <os x> .

Это возможно?

3 ответа3

29

NB. Хотя оба предыдущих ответа дали мне достаточно информации, чтобы выяснить, как решить проблему (и получил от меня отклики), ни один из них не дал полного ответа. Чтобы другие люди с таким же вопросом не проводили исследования, я добавляю свой собственный ответ. Однако если @googletorp или @Azz отредактируют свой ответ, включив в него эту информацию, я удалю свой ответ и приму их.

Вывод в :h feature-list предполагает, что вы должны иметь возможность использовать has("win32") и has("macunix") , но последний не работает в версии Vim, включенной в OS X. (Это, однако, работать в MacVim.)

Вот что я в итоге использовал:

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") работал для меня даже в 64-битном Vim на 64-битной Windows.

Вы также можете использовать аналогичные тесты uname в блоке if has("unix") чтобы отличать другие варианты Unix. Просто запустите uname или uname -a из командной строки, чтобы увидеть, с чем вам нужно сравнить s:uname . Смотрите также :h matchstr() если вам нужно сравнить только часть вывода uname .

4

Вы можете посмотреть здесь

По сути, вы можете использовать has() , system():

let os = substitute(system('uname'), "\n", "", "")
if os == "SunOS"
  ..
endif  
2

Кажется, это то, что вы ищете, я не совсем понимаю, поэтому я просто свяжу вас.

https://stackoverflow.com/questions/2842078/how-do-i-detect-os-x-in-my-vimrc-file-so-certain-configurations-will-only-apply

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .