在带病原体的病毒中,如何检查是否会加载插件?

时间:2015-08-28 15:56:43

标签: vim vim-plugin pathogen

我使用病原体在vim中管理我的插件,而且我的vimrc中有一个部分,我希望只有在没有安装/赢得某个插件的情况下才能运行该部分。 E.g。

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更容易,因此优雅的解决方案是搜索此路径。但搜索帮助,病原体来源,谷歌,并在这里揭示没有简单的方法来做到这一点。我可以在vim /病原体本地做这个吗?有插件可以帮我吗?我根本不应该这样做,因为检查失败的情况相当严重,只要我正确管理我的插件就不会发生这种情况吗?

2 个答案:

答案 0 :(得分:4)

大多数插件都有(重新)包含防护。通常命名为g:loaded_pluginname。使用this和after目录可以有条件地加载映射。

将以下内容放入~/.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()

答案 1 :(得分:2)

pathogen#infect()之后添加此内容:

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