VimL:检查函数是否存在



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

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

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

实现这一目标

的最简单方法是什么?

感谢您的帮助!

编辑:

我有以下几点:

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

使用

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

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

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

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新