2013-09-02 17 views
5

Vorrei verificare il .vimrc se è presente il patogeno e se lo è, chiamare pathogen#infect.Verificare se patogen è installato in vimrc

Questo funziona, ovviamente:

call pathogen#infect() 

Quindi sono fiducioso agente patogeno è stato installato correttamente.

Ma questo non carica patogeno:

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

Né questo:

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

Che cosa mi manca?

risposta

9

L'assegno non funziona a causa del meccanismo di caricamento automatico. Si potrebbe forzare il caricamento automatico da sourcing esplicitamente:

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

Ma alla fine, probabilmente si vuole solo evitare gli errori dal vostro .vimrc quando non è installato patogeno. Per questo, basta tacere eventuali errori risultanti con :silent!:

silent! call pathogen#infect() 

L'unico inconveniente è che eventuali errori di plugin patogeni sarebbero soppressi.

1

Questa è la mia soluzione per il problema :)

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

Nel caso in cui agente patogeno non è installato in ~/.vim, ad esempio, di default su MS Windows: se è vuoto (findfile ('autoload/patogeno. vim ', & rtp)) ... – Enno

Problemi correlati