凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

Vim の Plugin 管理環境を pathogen から neobundle.vim に移行してみた

はじめに

これまでは以下の URL を参考に、pathogen で vim の plugin の管理を行っていました。

ただ最近、neobundle.vim がイイよ!との噂を各所でチラホラ目にしたので、移行作業をしてみました。ただ、github や vim-scripts 以外の plugin はどうすれば良いのか分からなかったので、pathogen と neobundle.vim の共存環境にしました。

方法

d:id:osyo-manga:20111222を参考にしました。

へ行って説明を読んで導入すれば neobundle.vim の導入は完了ですが、pathogen とスマートに共存できるようにするため、ちょっとだけ変更します。

まず、~/.vim/bundle 以下に neobundle を git clone します。これで pathogen を通じて neobundle が読み込まれるようになります。

$ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle

次に、.vimrc を編集します。

" .vimrc の neobundle.vim の部分
set nocompatible
filetype off

if has('vim_starting')
"  set runtimepath+='path to neobundle directory'
  call neobundle#rc(expand('~/.vim/bundle/neobundle/plugins'))
endif

NeoBundle 'git://github.com/Shougo/clang_complete.git'
NeoBundle 'git://github.com/Shougo/echodoc.git'
NeoBundle 'git://github.com/Shougo/neocomplcache.git'
NeoBundle 'git://github.com/Shougo/neobundle.vim.git'
NeoBundle 'git://github.com/Shougo/unite.vim.git'
NeoBundle 'git://github.com/Shougo/vim-vcs.git'
NeoBundle 'git://github.com/Shougo/vimfiler.git'
NeoBundle 'git://github.com/Shougo/vimshell.git'
NeoBundle 'git://github.com/Shougo/vinarise.git'

filetype plugin on
filetype indent on

runtimepath は pathogen でパスが通っているのでコメントアウトしました。ホームディレクトリにドットファイルが増えるのが嫌だったのと、vim の設定ファイル達 .vim/* は git で管理しているので .vim ディレクトリ内のどこかに入れたかったので、neobundle が管理する plugin の格納先はデフォルトの ~/.bundle から ~/.vim/bundle/neobundle/plugins に変更しました。

後は、これまで pathogen で管理していたプラグイン達の移行を行います。github のプラグインたちは submodule として追加していたので、次のように git のリポジトリを作成したディレクトリでコマンドを実行して submodule を消してしまいます。

$ git submodule rm *

~/.vim/bundle/ 内のプラグインをひとつひとつ github にあるのか、それとも vim-scripts にあるのかなどを調べて、 .vimrc に追記します。私の場合は以下のような感じになりました。

" Shougo-san's Repos (default)
NeoBundle 'git://github.com/Shougo/clang_complete.git'
NeoBundle 'git://github.com/Shougo/echodoc.git'
NeoBundle 'git://github.com/Shougo/neocomplcache.git'
NeoBundle 'git://github.com/Shougo/neobundle.vim.git'
NeoBundle 'git://github.com/Shougo/unite.vim.git'
NeoBundle 'git://github.com/Shougo/vim-vcs.git'                                                                  
NeoBundle 'git://github.com/Shougo/vimfiler.git'
NeoBundle 'git://github.com/Shougo/vimshell.git'
NeoBundle 'git://github.com/Shougo/vinarise.git'

" GitHub Repos
NeoBundle 'git://github.com/h1mesuke/vim-alignta.git'
NeoBundle 'git://github.com/thinca/vim-quickrun.git'
NeoBundle 'git://github.com/tyru/open-browser.vim.git'
NeoBundle 'git://github.com/jceb/vim-hier.git'
NeoBundle 'git://github.com/Shougo/vimproc.git'
NeoBundle 'git://github.com/thinca/vim-ref.git'
NeoBundle 'git://github.com/kien/rainbow_parentheses.vim.git'

" Vim-scripts Repos
NeoBundle 'quickfixstatus.vim'
NeoBundle 'TwitVim'

" Unite Repos (おまけ)
NeoBundle "git://github.com/osyo-manga/unite-banban.git"
NeoBundle "git://github.com/osyo-manga/unite-banban2.git"
NeoBundle "git://github.com/osyo-manga/unite-jojo.git"
NeoBundle "git://github.com/osyo-manga/unite-nyancat_anim.git"
NeoBundle "git://github.com/osyo-manga/unite-rofi.git"
NeoBundle "git://github.com/osyo-manga/unite-shimapan.git"

移行できなかった Smooth Scrollとかコメントアウト系の一部の plugin だけ、そのまま bundle ディレクトリ内に残しておきました。

そして neobundle の管理対象になった plugin 達は ~/.vim/bundle/ 以下から消してしまいます。

rm -rf vim-alignta vim-quickrun ...(以下略

最後に、vimを起動して、

:NeoBundleInstall

をすれば完了です!以降の更新は、要らなくなった plugin は .vimrc から消去して

:NeoBundleClear

追加したい plugin は .vimrc に追記して

:NeoBundleInstall

各 plugin のアップデートは

:NeoBundleInstall!

のようです。Unite にも対応しているとのこと。

:Unite neobundle/install:!
:Unite neobundle/install:neocomplcache
:Unite neobundle/install:neocomplcache:unite.vim

素晴らしい。