如何在我的 .vimrc 中区分当前的操作系统?

Ric*_*ich 20 windows vim macos

我在 OS X 和 Windows 上都使用 Vim,配置几乎相同。

我希望能够.vimrc在两个操作系统上使用相同的操作系统,但是我需要以不同的方式配置一些东西。

我想添加到我的.vimrc文件中的是:

:if <windows>
  "some windows-specific settings here
:elseif <os x>
  "some os x-specific settings here
:endif
Run Code Online (Sandbox Code Playgroud)

但我不知道<windows>and 有什么用<os x>

这可能吗?

Ric*_*ich 30

注意,虽然之前的两个答案都给了我足够的信息来弄清楚如何解决问题(并收到了我的赞成票),但实际上都没有给出完整的答案。为了让其他有同样问题的人不必进行研究,我添加了我自己的答案。但是,如果@googletorp 或@Azz 编辑他们的答案以包含此信息,我将删除我的答案并接受他们的答案。

输出 to:h feature-list表明您应该能够使用has("win32")and has("macunix"),但后者在 OS X 中包含的 Vim 版本中不起作用。 (但是,它在 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
Run Code Online (Sandbox Code Playgroud)

请注意,这has("win32")对我有用,即使在 64 位 Windows 上的 64 位 Vim 中也是如此。

您还可以使用块uname内的类似测试if has("unix")来区分其他风格的 Unix。只需运行unameuname -a从命令行查看您需要比较s:uname的内容。另请参阅:h matchstr()是否只需要比较 的一部分uname输出。