¿Cómo puedo distinguir el sistema operativo actual en mi .vimrc?

20

Yo uso Vim en OS X y Windows, con una configuración casi idéntica.

Me gustaría poder usar lo mismo .vimrcen los dos sistemas operativos, pero hay un par de cosas que necesito configurar de manera diferente.

Lo que me gustaría agregar a mi .vimrcarchivo es:

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

Pero no sé qué usar <windows>y <os x>.

es posible?

Rico
fuente

Respuestas:

30

Nota: aunque ambas respuestas anteriores me dieron suficiente información para descubrir cómo resolver el problema (y recibieron votos positivos de mi parte), ninguna de las dos dio la respuesta completa. Para que otros con la misma pregunta no tengan que hacer la investigación, estoy agregando mi propia respuesta. Sin embargo, si @googletorp o @Azz editan su respuesta para incluir esta información, eliminaré mi respuesta y aceptaré la suya.

La salida a :h feature-listsugiere que usted debería ser capaz de utilizar has("win32")y has("macunix"), aunque este último no funciona en la versión de Vim incluido en OS X. (Se hace , sin embargo, el trabajo en MacVim).

Esto es lo que terminé usando:

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

Tenga en cuenta que has("win32")funcionó para mí, incluso en Vim de 64 bits en Windows de 64 bits.

También podría usar pruebas similares unamedentro del if has("unix")bloque para distinguir otros sabores de Unix. Simplemente ejecute unameo uname -adesde la línea de comandos para ver con qué necesita comparar s:uname. Vea también :h matchstr()si necesita comparar solo una parte de unamela salida de.

Rico
fuente
1
Para el registro: en vim de MSYS2 has ("unix") es 1, has ("win32") es 0 y has ("win32unix") es 1. Entonces usa has ("win32unix") para distinguirlo.
user31389
4

Puedes echar un vistazo aquí

Básicamente, se puede utilizar cualquiera has(), system():

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