0

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

ほとんどの場合、おそらく機能する 2 つのオプションは、dwm.vim が存在するg:pathogen_disabledかどうかを確認することと、ディレクトリ.vim/bundle/dwm.vimが存在するかどうかを確認することです。

ただし、これらのチェックはやや脆いようです。たとえば、dwm がまったくない場合、dwm.vim が病原体無効になっていないことを確認するだけでは不十分であり、何らかの理由で dwm.vim が標準外の場所にあり、それでもruntimepathパスに含まれている場合、チェックは機能しません。 .

病原体の全体的なポイントは、私の管理をruntimepath容易にすることなので、エレガントな解決策はこのパスを検索することです。しかし、ヘルプ、病原体のソース、Google、およびここを検索すると、これを行う簡単な方法が見つかりませんでした. これを vim/pathogen でネイティブに実行できますか? 私のためにこれを行うプラグインはありますか?チェックが失敗するケースはかなりまれであり、プラグインを適切に管理している限り発生しないため、これをまったく行うべきではありませんか?

4

2 に答える 2

3

ほとんどのプラグインには (再) 包含ガードがあります。通常は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()
于 2015-08-28T17:43:25.457 に答える