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

しかし最終的には、Pathogen がインストールされていないときに .vimrc からのエラーを回避したいだけでしょう。そのためには、結果として生じるエラーを黙らせるだけ: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 に答える