Come posso distinguere l'attuale sistema operativo nel mio .vimrc?


20

Uso Vim sia su OS X che su Windows, con una configurazione quasi identica.

Vorrei poter utilizzare lo stesso .vimrcsui due sistemi operativi, ma ci sono un paio di cose che devo configurare in modo diverso.

Quello che vorrei aggiungere al mio .vimrcfile è:

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

Ma non so cosa usare per <windows>e <os x>.

È possibile?

Risposte:


30

NB Sebbene entrambe le risposte precedenti mi fornissero abbastanza informazioni per capire come risolvere il problema (e ricevuto voti positivi da me), nessuna delle due ha effettivamente fornito la risposta completa. In modo che altri con la stessa domanda non debbano fare ricerche, sto aggiungendo la mia risposta. Tuttavia, se @googletorp o @Azz modificano la loro risposta per includere queste informazioni, rimuoverò la mia risposta e accetterò la loro.

L'uscita a :h feature-listsuggerisce che si dovrebbe essere in grado di utilizzare has("win32")e has("macunix"), ma quest'ultimo non funziona nella versione di Vim incluso in OS X. (Si fa , però, il lavoro in MacVim.)

Ecco cosa ho finito per usare:

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

Nota che ha has("win32")funzionato per me, anche a 64 bit Vim su Windows a 64 bit.

Puoi anche usare test simili unameall'interno del if has("unix")blocco per distinguere altri sapori di Unix. Esegui unameo uname -adalla riga di comando per vedere con cosa devi confrontare s:uname. Vedi anche :h matchstr()se devi confrontare solo una parte unamedell'output.


1
Per la cronaca: in vim da MSYS2 ha ("unix") è 1, ha ("win32") è 0 e ha ("win32unix") è 1. Quindi usa has ("win32unix") per distinguerlo.
user31389

4

Puoi dare un'occhiata qui

In sostanza, è possibile utilizzare has(), system():

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

2

Questo sembra essere quello che stai cercando, non lo capisco bene, quindi ti collegherò.

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


Strano. Sembra che sia stato cancellato da stackoverflow.com/questions/2842078
Rich

1
@Rich: tutti i dati SU sono concessi in licenza ai sensi di Creative Commons Attribution ShareAlike, a cui sembrano aderire.
Daniel Beck

@Daniel: interessante! Grazie per avermi fatto sapere.
Ricco
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.