2014/10/30 vundleの仕様が変わったようなので記事の内容を更新しました。

「みなさん、vim ってますかぁ?」

と、つい言いたくなるくらい毎日暑いですが、皆様いかがお過ごしでしょうか。

さて、今日は久しぶりに vim について書いてみようかと思うんです。えぇ、あの vim です。最近は新しいプラグインとかを入れるのもおっくうになっててあまりカスタマイズもしてなかったんですが、最近もの凄い便利なプラグインが出てきたではありませんか!それが今回紹介する vundle です。Rails3 で使われている Bundler にインスパイアされた vim のプラグイン管理ツールなので、Rails を使っている人にとってはおなじみな名前ですね。

この子はほんとデキるんですよ。さっそく vundle の使用前と使用後とでディレクトリ構成を比較してみましょう。

使用前:
.vim
  ├── autoload
  ├── doc
  ├── ftplugin
  `-─ plugin

これだけ見るとすっきりとした構造で素晴らしいんですが、実際には autoload とか ftplugin とか plugin とかのディレクトリの中に自分の使いたいプラグインのファイルを正しく置いてあげないといけないんです。めんどくさい…。しかもディレクトリの中は各プラグインのファイルが混在する状態となります。プラグインが増えてきたらもうごちゃごちゃです。

そのため、「あのプラグインもう使わなくなったから消そう」と思ってもどのファイルを消したらいいのかよくわからなかったり。結果としてゴミファイルが溜まるし、新しいプラグインの導入も気が重くなってしまいます。。

・・・そこで vundle ですよ!! (*´Д`*)

使用後:
.vim
  |-- bundle
  |     |-- AutoComplPop
  |     |     |-- README
  |     |     |-- autoload
  |     |     |-- doc
  |     |     `-- plugin
  |     |-- ZenCoding.vim
  |     |     |-- README
  |     |     |-- autoload
  |     |     |-- doc
  |     |     `-- plugin
  |     |-- rails.vim
  |     |     |-- README
  |     |     |-- autoload
  |     |     |-- doc
  |     |     `-- plugin
  |     |-- snippetsEmu
  |     |     |-- README
  |     |     |-- doc
  |     |     `-- plugin
  |     |-- surround.vim
  |     |     |-- README
  |     |     |-- doc
  |     |     `-- plugin
  |     `-- vim-fugitive
  |           |-- README.markdown
  |           |-- doc
  |           `-- plugin
  `-- vundle.git

ぱっと見た感じ長くなっているように見えますが…違うんです。誤解です!!

実際には .vim ディレクトリの中に bundle というディレクトリが作成され、その中に利用しているプラグイン毎にディレクトリが勝手に作られてファイルが置かれます。いちいちファイルを正しい場所に置いたりとかもしなくていいんです!各プラグインのファイルがどこにあるかは一目瞭然だし、使わなくなったときに削除するのも超簡単です。

どうやったら使える?

インストールと使い方もすごく簡単です。まずインストールは git clone するだけです。.vim の下に clone してあげてください。

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

ただ dotfiles をすでに git で管理しているような環境だと vundle は外部リポジトリとして追加してあげた方が良さそうです。こんな感じですかね。

cd dotfiles # リポジトリに移動する
git submodule add http://github.com/gmarik/Vundle.vim.git .vim/bundle/Vundle.vim
git add .
git commit -m "add vundle submodule"

あとは使いたいプラグインを .vimrc にちょろっと書いてあげるだけで使えるようになります。プラグインは .vimrc にこのように Bundle "plugin_name" と記述するだけ。.vimrc で使っているプラグインが一元管理できるのはすごく楽ですね〜。

あ、4, 5, 16行目はおまじないです。詳しくは こちら を参照ください。

set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" vim-scripts リポジトリ (1)
Plugin "rails.vim"

" github の任意のリポジトリ (2)
Plugin "tpope/vim-fugitive"

" github 以外のリポジトリ (3)
Plugin "git://git.wincent.com/command-t.git"

call vundle#end()
filetype plugin indent on

使いたいプラグインを指定するわけですが、プラグインの置かれている場所によって3つの方法があります。vim-scripts リポジトリ (http://vim-scripts.org/vim/scripts.html) に置かれていれば (1) のようにプラグイン名を、github の任意のリポジトリであれば (2) のようにリポジトリ名とプラグイン名を、github のリポジトリでは無い場合には (3) のようにフルパスで指定します。

で、最後に vim 上で :PluginInstall することで、プラグインが .vim/bundle 以下にさくっとインストールされます。あっという間です。もう使えます!!

これらのプラグインは .vimrc の記述を消せば読み込まれません。ただ、.vim/bundle 以下のディレクトリは残ってしまうので、それは :PluginClean で削除しましょう。ただこれはディレクトリを削除するだけのコマンドなので手動で削除した方が簡単かも。。

あ、ちなみにプラグインが vim-scripts リポジトリにあるかどうか調べるのめんどくさいなーっていうめんどうくさがりな人には :PluginSearch というコマンドがあるのでこれで :PluginSearch して検索しちゃうのがオススメです。

最後に vundle の利点をまとめておきます。良い vim ライフを!

・ディレクトリ構造が直感的なので扱いやすい(削除とか)
・プラグインの導入がとっても簡単
・.vimrc で使っているプラグインを一元管理できる
このエントリーをはてなブックマークに追加