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

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

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

我希望能够.vimrc在两个操作系统上使用相同的功能,但有几件事情我需要进行不同的配置。

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

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

但我不知道如何使用<windows><os x>

这可能吗?

答案1

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

输出:h feature-list表明你应该能够使用has("win32")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

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

您还可以在块uname内使用类似的测试if has("unix")来区分其他版本的 Unix。只需从命令行运行uname或即可查看需要比较的内容。如果您只需要比较输出的一部分,另请参阅。uname -as:uname:h matchstr()uname

答案2

你可以看看这里

基本上,您可以使用has()system()

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

答案3

相关内容