2015-08-28 4 views
1

Я использую патоген для управления моими плагинами в vim, и у меня есть раздел в моем vimrc, который я бы хотел запустить, только если определенный плагин не установлен/не будет загружен. Например.В vim с патогеном, как я могу проверить, будет ли загружен плагин?

if(dwm.vim not in use) 
    nnoremap <C-h> <C-w>h 
    nnoremap <C-j> <C-w>j 
    nnoremap <C-k> <C-w>k 
    nnoremap <C-l> <C-w>l 
endif 

два варианта, которые, вероятно, работают в большинстве случаев, чтобы проверить, если dwm.vim в g:pathogen_disabled и/или проверить, если каталог .vim/bundle/dwm.vim существует.

Однако эти проверки кажутся несколько хрупкими. Например, если у меня нет dwm при всех проверках на dwm.vim, чтобы не быть отключенным патогеном, недостаточно, и если по какой-либо причине dwm.vim находится в некотором нестандартном местоположении, которое все еще делает его в runtimepath, проверка пути не будет Работа.

Весь смысл патогена заключается в том, чтобы упростить управление моим runtimepath, поэтому элегантным решением было бы искать этот путь. Но поиск помощи, источник патогенов, google, и здесь не показал простой способ сделать это. Могу ли я сделать это в vim/pathogen изначально? Есть ли плагин, который сделает это для меня? Должен ли я вообще не делать этого, потому что случаи, когда проверки терпят неудачу, являются довольно короткими и не случаются, если я правильно управляю своими плагинами?

ответ

2

Добавьте это после того, как pathogen#infect():

if globpath(&runtimepath, 'dwm.vim', 1) !=# '' 
    " dwm.vim caught in the act 
endif 
+0

Совершенные спасибо. Точно, что я хочу и обобщаю в ситуациях, которые я хочу искать 'rtp', кроме поиска плагинов. – Danwizard208

4

Большинство плагинов есть (ре) включение охраны. Обычно называют g:loaded_pluginname. Используя этот и последующий каталоги, вы можете условно загрузить свои сопоставления.

Вставьте следующий ~/.vim/after/plugin/dwm.vim:

if !get(g:, 'loaded_dwm', 0) 
    nnoremap <C-j> <C-w>j 
    nnoremap <C-k> <C-w>k 
    nnoremap <C-l> <C-w>l 
endif 

Для получения дополнительной справки смотрите:

:h write-plugin 
:h after-directory 
:h get() 
+0

Это хорошо, но полагается на плагин, определяющий включенную охрану. – Danwizard208

+0

dwm.vim выходит из обычной схемы и использует 'g: dwm_version' для защиты включения. –