2013-09-02 16 views
5

Chciałbym sprawdzić .vimrc, czy patogen jest obecny, i zadzwoń pod pathogen#infect, jeśli jest.Sprawdź, czy patogen jest zainstalowany w vimrc

To oczywiście działa:

call pathogen#infect() 

Więc jestem przekonany, patogen jest prawidłowo zainstalowana.

Ale to nie ładuje patogen:

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

Ani nie to:

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

Czego mi brakuje?

Odpowiedz

9

Twoje sprawdzenie nie działa z powodu mechanizmu automatycznego ładowania. Można wymusić AutoLoad jawnie pozyskiwania go:

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

Ale w końcu, pewnie po prostu chce uniknąć błędów z .vimrc gdy nie jest zainstalowany patogenu. W tym celu, po prostu uciszyć wszelkie błędy wynikające z :silent!:

silent! call pathogen#infect() 

Jedynym minusem jest to, że wszelkie błędy plugin patogenów będą tłumione.

1

To jest moje rozwiązanie problemu :)

if filereadable(expand("~/.vim/autoload/pathogen.vim")) 
    runtime! autoload/pathogen.vim 
    if exists("g:loaded_pathogen") 
     execute pathogen#infect() 
    endif 
endif 
+0

W przypadku patogen nie jest zainstalowany w ~/.vim, na przykład domyślnie w systemie MS Windows: jeśli pusta (findfile ('autoload/patogen. vim ', & rtp)) ... – Enno