Jak mogę odróżnić obecny system operacyjny w moim .vimrc?

20

Używam Vima zarówno na OS X, jak i Windows, z prawie identyczną konfiguracją.

Chciałbym móc używać tego samego .vimrcw dwóch systemach operacyjnych, ale jest kilka rzeczy, które muszę skonfigurować inaczej.

Co chcę dodać do mojego .vimrcpliku to:

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

Ale nie wiem, do czego użyć <windows>i <os x>.

czy to możliwe?

Bogaty
źródło

Odpowiedzi:

30

Uwaga: Mimo że obie poprzednie odpowiedzi dały mi wystarczająco dużo informacji, aby dowiedzieć się, jak rozwiązać problem (i otrzymałem ode mnie opinie), żadne z nich nie udzieliło pełnej odpowiedzi. Aby inni z tym samym pytaniem nie musieli przeprowadzać badań, dodaję własną odpowiedź. Jeśli jednak @googletorp lub @Azz edytują swoją odpowiedź, aby uwzględnić te informacje, usunę moją odpowiedź i zaakceptuję ich.

Wyjście do :h feature-listsugeruje, że powinieneś być w stanie wykorzystać has("win32")i has("macunix"), ale ten nie działa w wersji Vima zawarte w OS X. (to robi , jednak praca w MacVim).

Oto, co ostatecznie wykorzystałem:

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

Zauważ, że has("win32")działało dla mnie, nawet w 64-bitowym Vimie na 64-bitowym systemie Windows.

Możesz również użyć podobnych testów unamewewnątrz if has("unix")bloku, aby rozróżnić inne smaki Uniksa. Wystarczy uruchomić unamelub uname -az wiersza polecenia, aby zobaczyć, z czym musisz porównać s:uname. Zobacz także, :h matchstr()czy musisz porównać tylko część unamewyników.

Bogaty
źródło
1
Dla przypomnienia: w vimie z MSYS2 ma („unix”) wynosi 1, ma („win32”) wynosi 0 i ma („win32unix”) wynosi 1. Więc użyj ma („win32unix”), aby go rozróżnić.
user31389,
4

Możesz zajrzeć tutaj

Zasadniczo, można skorzystać z jednego has(), system():

let os = substitute(system('uname'), "\n", "", "")
if os == "SunOS"
  ..
endif  
googletorp
źródło
2

Wydaje się, że tego właśnie szukasz. Nie do końca to rozumiem, więc po prostu cię połączę.

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

Azz
źródło
Dziwne. To wydaje się być zeskrobane ze stackoverflow.com/questions/2842078
Rich
1
@Rich: Wszystkie dane SU są licencjonowane na licencji Creative Commons Uznanie autorstwa - Na tych samych warunkach, do których wydają się przestrzegać.
Daniel Beck
@Daniel: Ciekawe! Dzięki, że dałeś mi znać.
Bogaty