Як я можу розрізнити поточну операційну систему в моєму .vimrc?


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>.

Чи можливо це?

Відповіді:


30

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результатів.


1
Для запису: у vim від MSYS2 має ("unix") - 1, має ("win32") - 0, а у ("win32unix") - 1. Тому використовуйте "(win32unix") для розрізнення.
користувач31389

4

Ви можете подивитися тут

В принципі, ви можете використовувати або has(), system():

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

2

Це, здається, те, що ви хочете, я не зовсім розумію цього, тому я просто зв'язатиму вас.

/programming/2842078/how-do-i-detect-os-x-in-my-vimrc-file-so-certain-configurations-will-only-apply


Дивно. Це, здається, було зірвано з stackoverflow.com/questions/2842078
Rich

1
@Rich: Усі дані SU ліцензовані відповідно до Creative Commons Attribution ShareAlike, якого, схоже, вони дотримуються.
Даніель Бек

@Daniel: Цікаво! Дякую що дали мені знати.
Багатий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.