簡體   English   中英

在帶有病原體的vim中,如何檢查是否將加載插件?

[英]In vim with pathogen, how can I check if a plugin will be loaded?

我正在使用病原體來管理vim中的插件,並且在vimrc中有一個部分僅當未安裝/不加載某些插件時才想運行。 例如

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 / pathogen中本地執行此操作嗎? 有插件可以幫我嗎? 我是否應該完全不這樣做,因為檢查失敗的情況相當棘手,只要我正確管理插件,就不會發生這種情況?

大多數插件都有(重新)包含防護。 通常命名為g:loaded_pluginname 使用此目錄和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()

pathogen#infect()之后添加:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM