2013-09-02 55 views
5

Tôi muốn kiểm tra trong .vimrc liệu mầm bệnh có hiện diện hay không và gọi pathogen#infect nếu có.Kiểm tra xem tác nhân gây bệnh có được cài đặt trong vimrc

Điều này rõ ràng hoạt động:

call pathogen#infect() 

Vì vậy, tôi tin tưởng mầm bệnh đã được cài đặt đúng cách.

Nhưng điều này không nạp mầm bệnh:

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

Không thực hiện điều này:

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

tôi thiếu gì?

Trả lời

9

Séc của bạn không hoạt động do cơ chế tự động tải. Bạn có thể buộc các autoload bởi nguồn nó một cách rõ ràng:

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

Nhưng cuối cùng, có lẽ bạn chỉ muốn tránh các lỗi từ vimrc của bạn khi mầm bệnh không được cài đặt. Cho rằng, chỉ cần im lặng bất kỳ sai sót dẫn đến với :silent!:

silent! call pathogen#infect() 

Nhược điểm duy nhất là bất kỳ lỗi Plugin Mầm bệnh sẽ bị loại bỏ.

1

Đây là giải pháp của tôi cho vấn đề :)

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

Trong trường hợp mầm bệnh không được cài đặt trong ~/.vim, ví dụ bằng cách mặc định trên MS Windows: nếu rỗng (findfile ('autoload/mầm bệnh. vim ', & rtp)) ... – Enno