我在很多机器上使用相同的vimrc,其中有些安装了fugitive.vim插件,而有些没有。我喜欢在我的状态栏中包含fugitive#statusline()
,但是在没有安装插件的机器上,这会导致错误。
有没有一种方法可以在调用set statusline
之前检查此函数的存在?我尝试过使用exists
,但由于某种原因(加载顺序?)它不起作用。
if exists("*fugitive#statusline")
set statusline=%<\ %f\ %{fugitive#statusline()} ... (other stuff)
endif
我也尝试使用
silent!
命令前缀来消除错误,但似乎也不起作用。
vimrc
时,变量g:loaded_fugitive
要么为空,要么不存在。 - Christophervim-fugitive
安装,因为g:loaded_fugitive
是在fugitive.vim
中定义的,并且这种插值是在评估状态行时完成的,而不仅仅是执行vimrc
时。 - tungdvimrc
之后加载,这在:help initialization
中清楚地记录下来。然而,由于%{}
表示每当状态行更新时评估表达式,因此仍然可以按预期工作。 - tungd