VimL:检查功能是否存在

VimL:检查功能是否存在,vim,vim-plugin,Vim,Vim Plugin,现在我正在清理我的.vimrc文件,以确保它在大多数系统上兼容 在我的statusline中,我使用了另一个插件设置的函数,即由引入的GitBranchInfoString()函数 我想做的是检查这个函数是否已设置,然后才将其添加到statusline。这将是在它自己的路线,所以我只需要检查它 最简单的方法是什么 谢谢你的帮助 编辑: 我有以下资料: if exists('*GitBranchInfoString') let &stl.='%{GitBranchInfoStrin

现在我正在清理我的
.vimrc
文件,以确保它在大多数系统上兼容

在我的statusline中,我使用了另一个插件设置的函数,即由引入的
GitBranchInfoString()
函数

我想做的是检查这个函数是否已设置,然后才将其添加到statusline。这将是在它自己的路线,所以我只需要检查它

最简单的方法是什么

谢谢你的帮助

编辑:

我有以下资料:

if exists('*GitBranchInfoString')
    let &stl.='%{GitBranchInfoString()}'
endif
使用


当前选择的答案不适用于我(使用Vim 7.4/Ubuntu)。 我相信这是因为:

.vimrc是在加载任何插件之前获取的

正如@ZyX在评论中指出的那样

我的首选方法是检查插件文件是否存在。 我发现这比在外部文件中编写单独的函数更干净

if !empty(glob("path/to/plugin.vim"))
   echo "File exists."
endif

作为替代,您也可以使用regexp来确定手头的插件是否在您的
运行时路径中:

if &rtp =~ 'plugin-name'
    ...
endif

这样做的好处是,它可以与只在
自动加载
目录中包含vimscript代码的插件一起工作,而当.vimrc最初被解析时无法检测到,因为自动加载的代码段是在函数调用时加载的。

它会检查代码,但出于某种原因,它不会将其应用于状态行。我用我所拥有的更新了这个问题。@Eduan vimrc在加载任何插件之前就已经获得了源代码。在
VimCenter
事件上使用此条件,在检查之前将状态行内容放入
~/.vim/after/plugin/statusline.vim
statusline
可以是任何名称)或执行
runtime plugin/git branch info.vim
(这将禁止您使用
--noplugin
选项禁用此插件;但其他解决方案不会)。我明白了,我将稍后尝试,并给出任何反馈。:)获取更完整的答案:+1。检查Syntastic是否通过Vundle安装的示例:
if!空(glob(expand(“:p:h”)。“/.vim/bundle/syntastic”)
。(见附件。)
if &rtp =~ 'plugin-name'
    ...
endif