我在多台计算机之间共享 VIM 配置文件。但是,我希望某些设置特定于某些计算机。
例如,高分辨率笔记本电脑上的字体大小应该与低分辨率桌面不同。更重要的是,我希望 Windows 上的 gVIM 表现得更像 windows,OSX 上的 MacVim 表现得更像 maccy,Linux 上的 gVIM 表现得像往常一样。(这可能是一种奇怪的观点,但我非常习惯在切换操作系统时切换思维模式)
.vimrc
有没有办法根据机器或操作系统进行一些设置?
答案1
操作系统检测.vimrc
:
if has('win32')
......
elseif has('mac')
......
elseif has('unix')
......
endif
答案2
要针对特定机器进行测试,您可以测试该命令的输出hostname
。例如,
let hostname = substitute(system('hostname'), '\n', '', '')
if hostname == "tigger"
...
elseif hostname == "pooh"
...
endif
您还可以测试可用环境变量的值:
if $HOSTNAME == "tigger"
...
elseif $HOSTNAME == "pooh"
...
endif
该$DISPLAY
变量也可能有用。
答案3
我的中有这个片段vimrc
:
let s:host_vimrc = $HOME . '/.' . hostname() . '.vimrc'
if filereadable(s:host_vimrc)
execute 'source ' . s:host_vimrc
endif
如果存在,则执行此操作source $HOME/.$HOSTNAME.vimrc
。我使用了和连接,如果您知道始终设置,hostname()
也可以使用更简洁的方法。expand('$HOME/.$HOSTNAME.vimrc')
$HOSTNAME
答案4
对于大量的机器,列出所有主机名.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