7

我想检查.vimrc是否存在病原体,pathogen#infect如果存在就打电话。

这显然有效:

call pathogen#infect()

所以我有信心正确安装了病原体。

但这不会加载病原体:

if exists("*pathogen#infect")
    call pathogen#infect()
endif

这也不是:

if exists("g:loaded_pathogen")
    call pathogen#infect()
endif

我错过了什么?

4

2 回答 2

12

由于自动加载机制,您的检查不起作用。您可以通过显式采购来强制自动加载:

runtime! autoload/pathogen.vim
if exists("*pathogen#infect")
    call pathogen#infect()
endif

但最后,您可能只是想避免 .vimrc 在未安装 Pathogen 时出现错误。为此,只需使用以下命令使任何由此产生的错误静音:silent!

silent! call pathogen#infect()

唯一的缺点是任何 Pathogen 插件错误都会被抑制。

于 2013-09-02T15:52:55.000 回答
1

这是我解决问题的方法:)

if filereadable(expand("~/.vim/autoload/pathogen.vim"))
    runtime! autoload/pathogen.vim
    if exists("g:loaded_pathogen")
       execute pathogen#infect()
    endif
endif
于 2014-01-11T23:26:02.367 回答