Answers:
操作系统检测.vimrc
:
if has('win32')
......
elseif has('mac')
......
elseif has('unix')
......
endif
has('mac')
对于所有Mac还是仅适用于OS-X之前的Mac是正确的。请参阅:help feature-list
完整列表。
has('unix')
。我的错。
has("mac")
。我的猜测是他们使用了一些补丁,这些补丁实际上使功能测试正常工作。如果您确实依赖has("mac")
测试,请进行一些测试以确保您的vim支持该测试。
要测试特定机器,可以测试hostname
命令的输出。例如,
let hostname = substitute(system('hostname'), '\n', '', '')
if hostname == "tigger"
...
elseif hostname == "pooh"
...
endif
您还可以测试可用环境变量的值:
if $HOSTNAME == "tigger"
...
elseif $HOSTNAME == "pooh"
...
endif
该$DISPLAY
变量也可能有用。
system('hostname')
是machine.mycompany.com\n
,因此我不得不将替代命令更改为substitute(system('hostname'), '\.\_.*$', '', '')
。
先前关于操作系统检测的答案对我来说并不能在MacVim中检测到OS X(而且has("macunix")
文档中也没有建议这样做)。
这是我用来区分Windows和OS X的方法:
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 -a
从命令行查看需要比较的内容s:uname with
。另请参阅:h matchstr()
是否仅需要比较uname输出的一部分。
在很多机器上,列出所有主机名.vimrc
可能变得很乏味,可能更容易区分不同的unix风格:
" set font when running on Solaris
if (match(system('uname -s'), 'SunOS') >= 0)
set guifont=* " fixes "E665: Cannot start GUI, no valid font found"
endif
has('gui_running')
如果需要区分tty模式和GUI模式。