Comment distinguer le système d'exploitation actuel dans mon .vimrc?

20

J'utilise Vim sur OS X et Windows, avec une configuration presque identique.

J'aimerais pouvoir utiliser la même chose .vimrcsur les deux systèmes d'exploitation, mais il y a quelques choses que je dois configurer différemment.

Ce que j'aimerais ajouter à mon .vimrcfichier, c'est:

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

Mais je ne sais pas quoi utiliser <windows>et <os x>.

Est-ce possible?

Riches
la source

Réponses:

30

NB Bien que les deux réponses précédentes m'ont donné suffisamment d'informations pour comprendre comment résoudre le problème (et reçu des votes positifs de ma part), aucune n'a donné la réponse complète. Pour que les autres ayant la même question n'aient pas à faire la recherche, j'ajoute ma propre réponse. Cependant, si @googletorp ou @Azz modifient leur réponse pour inclure ces informations, je supprimerai ma réponse et accepterai la leur.

La sortie à :h feature-listsuggère que vous devriez pouvoir utiliser has("win32")et has("macunix"), mais ce dernier ne fonctionne pas dans la version de Vim incluse dans OS X. (Il fonctionne cependant dans MacVim.)

Voici ce que j'ai fini par utiliser:

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

Notez que cela a has("win32")fonctionné pour moi, même dans Vim 64 bits sur Windows 64 bits.

Vous pouvez également utiliser des tests similaires unameà l'intérieur du if has("unix")bloc pour distinguer d'autres versions d'Unix. Exécutez simplement unameou à uname -apartir de la ligne de commande pour voir avec quoi comparer s:uname. Voir aussi :h matchstr()si vous devez comparer seulement une partie de unamela sortie de.

Riches
la source
1
Pour mémoire: dans vim de MSYS2 a ("unix") est 1, a ("win32") est 0 et a ("win32unix") est 1. Donc utilisez has ("win32unix") pour le distinguer.
user31389
4

Vous pouvez jeter un œil ici

En gros, vous pouvez utiliser has(), system():

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

Cela semble être ce que vous recherchez, je ne le comprends pas très bien, je vais donc vous lier.

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

Azz
la source
Étrange. Cela semble être supprimé de stackoverflow.com/questions/2842078
Rich
1
@Rich: Toutes les données SU sont concédées sous licence Creative Commons Attribution ShareAlike, à laquelle elles semblent adhérer.
Daniel Beck
@Daniel: Intéressant! Merci de me le faire savoir.
Rich