27

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

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

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

完成此任务的最简单方法是什么?

感谢你的帮助!

编辑:

我有以下内容:

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

3 回答 3

39

采用

if exists("*GitBranchInfoString")
    " do stuff here
endif
于 2012-12-04T19:25:00.177 回答
7

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

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

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

于 2018-01-10T00:11:57.963 回答
6

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

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

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

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

if !empty(glob("path/to/plugin.vim"))
   echo "File exists."
endif
于 2015-05-25T18:59:02.973 回答