我使用病原体在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 /病原体本地做这个吗?有插件可以帮我吗?我根本不应该这样做,因为检查失败的情况相当严重,只要我正确管理我的插件就不会发生这种情况吗?
答案 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