VimL:检查函数是否存在

时间:2012-12-04 19:23:32

标签: vim vim-plugin

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

在我的状态行中,我使用了另一个插件设置的函数,this plugin引入的GitBranchInfoString()函数。

我想做的是检查是否设置了此功能,然后将其添加到状态行。它将在它自己的行中,所以我只需要检查它。

实现这一目标的最简单方法是什么?

感谢您的帮助!

编辑:

我有以下内容:

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

3 个答案:

答案 0 :(得分:26)

使用

if exists("*GitBranchInfoString")
    " do stuff here
endif

答案 1 :(得分:6)

当前选择的答案对我不起作用(使用Vim 7.4 / Ubuntu)。 我相信那是因为:

  

.vimrc在加载任何插件之前来源

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

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

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

答案 2 :(得分:2)

作为替代方案,您也可以使用正则表达式来决定手头的插件是否在runtimepath中:

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

这样做的好处是,它适用于只在autoload目录中有vimscript代码的插件,而当最初解析.vimrc时,无法检测到该代码,因为自动加载代码片段已加载到函数调用的时间。