如何使 .vimrc 中的 VIM 设置依赖于计算机?

如何使 .vimrc 中的 VIM 设置依赖于计算机?

我在多台计算机之间共享 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

相关内容