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