.vimrcで現在のオペレーティングシステムを区別するにはどうすればよいですか?


20

OS XとWindowsの両方で、ほぼ同じ構成でVimを使用しています。

.vimrc2つのオペレーティングシステムで同じものを使用できるようにしたいと考えていますが、異なる構成が必要なことがいくつかあります。

.vimrcファイルに追加したいのは:

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

しかし、私はのために使用するかわからない<windows><os x>

これは可能ですか?

回答:


30

NB前の両方の答えは、問題を解決する方法を理解するのに十分な情報を私に与えましたが(そして私から賛成票を受け取りました)、どちらも実際に完全な答えを与えませんでした。同じ質問を持つ他の人が調査を行う必要がないように、私は自分の答えを追加しています。ただし、@ googletorpまたは@Azzが回答を編集してこの情報を含める場合は、回答を削除して受け入れます。

出力は、:h feature-listあなたが使用することができるはずことを示唆しているhas("win32")has("macunix")、しかし、Vimのバージョンでは動作しません。後者は、OS Xに含まれる(それはない、しかし、MacVimでの作業。)

これが私が最終的に使用したものです:

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")64ビットWindows上の64ビットVimでも、私にとってはうまくいったことに注意してください。

ブロックuname内で同様のテストを使用して、if has("unix")他のUnixのフレーバーを区別することもできます。実行するunameuname -a、コマンドラインから実行して、比較対象を確認してくださいs:uname。の出力の:h matchstr()一部のみを比較する必要がある場合も参照してくださいuname


1
レコードの場合:MSYS2からのvimでは、has( "unix")は1、has( "win32")は0、has( "win32unix")は1です。したがって、has( "win32unix")を使用して区別します。
user31389

4

あなたは見てとることができ、ここで

基本的に、あなたはどちらかを使用することができhas()system()

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

2

これはあなたが望んでいることのようです、私はそれをよく理解していませんので、私はあなたをリンクします。

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



1
@Rich:すべてのSUデータは、Creative Commons Attribution ShareAlikeの下でライセンスされています。
ダニエルベック

@ダニエル:面白い!知らせてくれてありがとうございます。
リッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.