Şu andaki işletim sistemini .vimrc sistemimde nasıl ayırt edebilirim?


20

Hem OS X hem de Windows'ta Vim'i neredeyse aynı yapılandırma ile kullanıyorum.

Aynısını .vimrciki işletim sisteminde de kullanabilmek isterdim , ancak farklı şekilde yapılandırmam gereken birkaç şey var.

Dosyama eklemek istediğim .vimrcşey:

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

Ama için kullanılacak bilmiyorum <windows>ve <os x>.

Mümkün mü?

Yanıtlar:


30

Not: Her iki önceki cevaplar da bana sorunun nasıl çözüleceğini (ve benden çok fazla puan aldı) bulmak için yeterli bilgi vermesine rağmen, ikisi de tam cevabı vermedi. Böylece aynı soruyu başkaları araştırmayı yapmak zorunda kalmaz, kendi cevabımı ekliyorum. Ancak, @googletorp veya @Azz bu bilgiyi eklemek için cevaplarını düzenlerse, cevabımı kaldıracağım ve onların cevaplarını kabul edeceğim.

Çıkış :h feature-listkullanmak gerekir önerir has("win32")ve has("macunix")ancak Vim sürümünde çalışmaz ikincisi OS X dahil (O does Ancak MacVim çalışma.)

İşte sonunda kullandığım şey:

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

has("win32")Benim için çalıştığını, 64 bit Windows'ta 64 bit Vim'de bile çalıştığını unutmayın .

Unix'in diğer lezzetlerini ayırt etmek unameiçin if has("unix")blok içindeki benzer testleri de kullanabilirsiniz . Sadece çalıştırmak unameveya uname -akomut satırından karşılaştırmak için gerekenleri görmek için s:unamebirlikte. Ayrıca :h matchstr(), unameçıktısının yalnızca bir bölümünü karşılaştırmanız gerekip gerekmediğine de bakın .


1
Kayıt için: MSYS2'deki vim'de ("unix"), 1, "(" win32 "), 0 ve (" win32unix "), 1'dir.
kullanıcı31389

4

Bir göz atabilirsiniz burada

Temel olarak, birini kullanabilirsiniz has(), system():

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.