Como posso distinguir o sistema operacional atual no meu .vimrc?

20

Eu uso o Vim no OS X e no Windows, com configuração quase idêntica.

Eu gostaria de poder usar o mesmo .vimrcnos dois sistemas operacionais, mas há algumas coisas que preciso configurar de maneira diferente.

O que eu gostaria de adicionar ao meu .vimrcarquivo é:

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

Mas não sei para que usar <windows>e <os x>.

Isso é possível?

Rico
fonte

Respostas:

30

NB: Embora as duas respostas anteriores tenham me dado informações suficientes para descobrir como resolver o problema (e recebi upvotes de mim), nenhuma delas deu a resposta completa. Para que outras pessoas com a mesma pergunta não precisem fazer a pesquisa, estou adicionando minha própria resposta. No entanto, se @googletorp ou @Azz editarem suas respostas para incluir essas informações, removerei minha resposta e as aceito.

A saída para :h feature-listsugere que você deve ser capaz de usar has("win32")e has("macunix"), mas o último não funciona na versão do Vim incluído no OS X. (Ele faz , no entanto, o trabalho em MacVim.)

Aqui está o que eu acabei 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

Observe que has("win32")funcionou para mim, mesmo no Vim de 64 bits no Windows de 64 bits.

Você também pode usar testes semelhantes unamedentro do if has("unix")bloco para distinguir outros sabores do Unix. Basta executar unameou uname -ana linha de comando para ver com o que você precisa comparar s:uname. Veja também :h matchstr()se você precisa comparar apenas uma parte da unamesaída de.

Rico
fonte
11
Para registro: no vim do MSYS2 tem ("unix") é 1, tem ("win32") é 0 e tem ("win32unix") é 1. Portanto, use has ("win32unix") para distingui-lo.
user31389
4

Você pode dar uma olhada aqui

Basicamente, você pode usar has(), system():

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