vim-plug: プラグインがインストール済みかどうかを判定する

追記: 以下の記事にfunction! s:plug.is_installed(name)としてプラグインの存在確認方法が載っていました。
おい、NeoBundle もいいけど vim-plug 使えよ by @b4b4r07 on @Qiita

例として、プラグインの存在確認をするための関数を定義してみます。vim-plug ではプラグインのリストがグローバル変数 g:plugs に辞書として格納されているので、これをうまく利用します。



vim-plugVimプラグインマネージャー。
今回、NeoBundleからvim-plugへ乗り換えたので、その時にしたことをメモ。

vim-plugにはNeoBundleのneobundle#is_installed({bundle-name})に相当する関数がないため、プラグイン依存の設定をvimrcに書きたいときに少し不便。
そこで、以下のような関数is_plugged({plugin-name})を書いて、プラグインがインストール済みかどうかを判定する。

" check the specified plugin is installed
function s:is_plugged(name)
    if exists('g:plugs') && has_key(g:plugs, a:name) && isdirectory(g:plugs[a:name].dir)
        return 1
    else
        return 0
    endif
endfunction

以下のように、neobundle#is_installed({bundle-name})と同じように使用できる。

" w3m plugin setting
if s:is_plugged("w3m.vim")
    let g:w3m#external_browser = 'open'
    let g:w3m#download_ext = [ 'zip', 'lzh', 'cab', 'tar', 'gz', 'z', 'exe' ]
    let g:w3m#search_engine = 'http://www.google.co.jp/search?ie=' . &encoding . '&q=%s'
    nmap <Space>w :W3m 
endif

" vim-go plugin setting
if s:is_plugged("vim-go")
    let g:go_bin_path = expand("~/.vim-go")
endif

参考