読者です 読者をやめる 読者になる 読者になる

neobundle.vim の遅延読み込みを使って gVim でしか使わないプラグインを定義する

Vim

僕は少しファイルを修正したりするときは zsh から CUIVim を,がっつり1つのディレクトリのソースを編集するときは gVim を使うようにしています.そして,プラグインの中には GUI のみでしか動作しないものや,gVim でしか使っていないプラグインも幾つかあります.CUI のほうの Vim は起動速度大事なので,そういったプラグインはなるべく gVim でのみ読みこむように設定したいところです.
例として,vim-powerline(ステータスラインをリッチにするプラグイン)は gVim でしか使わないとしましょう.

vim-powerline を gVim だけで読み込む方法の1つとしては,gvimrc のほうに NeoBundle を書くという方法があります.

" gvimrc

filetype off
filetype plugin indent off
NeoBundle 'Lokaltog/vim-powerline'
filetype plugin indent on

しかし,これだと CUIVim を起動した場合は ~/.vim/bundle/vim-powerline は neobundle.vim の管理下に無く,NeoBundleClean の対象になってしまうなど,問題があります.
そこで,.vimrc の読み込み時点では vim-powerline を読み込まずに neobundle.vim の管理下に置くだけにしておき,.gvimrc 読み込み時に初めて vim-powerline を読み込む設定を書きます.
これはプラグインの遅延読み込み NeoBundleLazy と NeoBundleSource を使って実現できます.

" vimrc
NeoBundleLazy 'Lokaltog/vim-powerline'
" gvimrc
NeoBundleSource vim-powerline

こうすることにより,実際の読み込みは NeoBundleSource を評価したときに初めて行われるため,CUIVim では vim-powerline は読み込まれず,かつ ~/.vim/bundle/vim-powerline を neobundle の管理下に置くことができます.