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


20

我在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>

这可能吗?

Answers:


30

注意:尽管前面的两个答案都给了我足够的信息来找出解决问题的方法(并得到了我的支持),但实际上都没有给出完整的答案。为了使其他有相同问题的人不必进行研究,我添加了自己的答案。但是,如果@googletorp或@Azz编辑他们的答案以包含此信息,我将删除我的答案并接受他们的答案。

输出的结果: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

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

您也可以unameif 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 '11

4

你可以在这里看看

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.