パソコン買ったらまず最初に入れとくべきモダンなvim管理

2011-08-13追記
最近のvim pluginの管理にはvundleがおすすめ。
http://vim-users.jp/2011/04/hack215/
.vimrcなどのdotfiles自体の管理には以下の方法が有用だと思います。

この記事でできるようになること
- Windows, Linux環境間, または家, 会社間などでvim設定の共有が可能になります。
- 転職や,新しいPCを買ったときなどのvim環境設定があっという間に終わります。
(vim installは含まなければ5分程度?)

この記事の主題は
- pathogen.vim
- githubとgit(git submodule)
です。
- pathogen.vimの機能によって、.vim以下を綺麗にする
- githubとgit submoduleを使って置いておくことで.vim以下をweb上で管理する
の二点が主題になります。

記事の想定読者
- vimを使っているが、家と会社で環境が違ってうっきゃー
- Linux環境ではvimを使っているが、Windowsテキストエディタ秀丸とかでうっきゃー
- 最近転職したけど新しく環境またつくるとかうっ(ry
- vimプラグイン管理でほぼイキかけた
- vim最近始めました(ry

予備知識

Vimプラグインを簡単にするプラグインpathogen.vim
pathogen.vimを簡単に説明します。
~/.vim/autoload/にこのプラグインをおいておくと、
~/.vim/bundle/以下においてあるプラグインvim読み込み時に適切に
読んでくれるというものらしいです。
つまり,

~/.vim/bundle/something_vim_plugin/plugin/hoge.vim
                                  /autoload/fuga.vim

みたいなディレクトリ構成を適切に設置してくれるという便利なプラグインです。

まず最初にこちらをうまいこと
~/.vim/autoload/pathogen.vim
となるように設置します。

本来は.vim/plugin, .vim/autoload, .vim/ftpluginなどとして置いておくモノを
機能ごとにまとめることができるのでものすごく重宝されていると思います。

githubとgit submoduleコマンド
githubはsocial codingサイトです。
コードをweb上で共有することができます。
つぎにgit submoduleですが、これはgithubなどで公開されているリポジトリ
外部モジュールとして取り込む事ができる機能です。

今回つくったファイル構成

まず今回つくったファイル構成を説明します。
(一般的なLinux環境を想定しています。)

~/dotfiles/.vimrc
          /.gitignore
          /.gitmodules
          /.git
          /.vim/autoload/pathogen.vim
               /bundle/vimrc/plugin/basic.vim
                                   /gui.vim
                                   /mappings.vim
                                   /plugins_vimrc.vim
                                   /util.vim
                      /hoge.vim/plugin/***
                      /fuga.vim/plugin/***

上から順に簡単に説明していきます。(詳細知りたい方はググッてください)
ファイル.vimrcは~/.vimrcに該当するファイルです。
ファイル.gitignoreはgitの管理ファイルから除外する対象を指定するファイルです。
ファイル.gitmodulesはgitのサブモジュールを管理するファイルです。
ディレクトリ.gitはgit init時に作成される、git管理用のディレクトリです。
ディレクトリ.vimは~/.vimに該当するディレクトリです。
ファイル/.vim/autoload/pathogen.vimは上記説明の通りです。
ファイル/bundle/vimrc/plugin/basic.vimは後ほど説明します。
/hoge.vim/plugin/***, /fuga.vim/plugin/***はそれぞれ独立した
vimプラグインです。

さて、これらをそのままにしておいてもvimはおそらく設定ファイルとして
dotfiles以下を見てくれないので、シンボリックリンクを作成して
vimにさがしてもらうようにします。
$HOMEディレクトリで

ln -s dotfiles/.vimrc .vimrc
ln -s dotfiles/.vim .vim

などとしておけば準備はOKです。


※参考のためgithubのdotfilesを以下に示します。
https://github.com/vimtaku/dotfiles

構成の説明

次に~/dotfiles/.vimrcの中身を覗いてみます。

~/dotfiles/.vimrc

" 基本的な設定はこちら
" .vim/bundle/vimrc/plugin/basic.vim
"
" GUI関連はこちら
" .vim/bundle/vimrc/plugin/gui.vim
"
" マッピングに関するものはこちら
" .vim/bundle/vimrc/plugin/mappings.vim
"
" プラグインとそのマッピングについてはこちら
" .vim/bundle/vimrc/plugin/plugins_vimrc.vim
"
" 独自関数や便利関数はこちら
" .vim/bundle/vimrc/plugin/util.vim

" pathogen.vim用
call pathogen#runtime_append_all_bundles()

今回pathogen.vimで管理するということで
pathogen.vimの関数をコールする コマンドしか用意せず、
本来.vimrcに書くべきものを
.vim/bundle/vimrc/plugin/*****.vim
としてそれぞれ書きだすようにしました。
これによって.vimrcの中がごちゃごちゃで、
どの設定がどこにあるかわからないという状況を回避することができます。

この管理によって何かデメリットがあるのかもしれませんが、
僕が現状使っていることに関しては特にデメリットは感じていません。
vimrcを編集したいときは.vimrcをひらいてからgfで該当ファイルに飛んで
編集することにしています。

dotfiles/.vim/bundle以下はそれぞれ独立したプラグインを登録します。

(dotfilesリポジトリがあるものと想定します。)
dotfiles以下で
git submodule add git://hogehoge.vim .vim/bundle/hogehoge.vim
などとして外部モジュールを登録します。

こうしておけば
たとえば上記を会社などでやっておいて

git clone git://github.com/my_account/dotfiles.git
cd dotfiles
git submodule init
git submodule update

とするだけで、全く同じ環境が手にはいります!
(ショートカットの作成も必要です)

余談ですが、
おそらくすでに僕の使っているものとまったく同じものを使いたければ
git://github.com/vimtaku/dotfiles.git
を対象として上のようなことをすれば可能かと思います。
(おすすめはしません。。)

Windows環境ではどうなのか

(gvimを使っている前提で話をします。)
いま手元にWindowsがないので記憶に基づいて話をしますが、
C:/Documents and Settings/user.name/
がhomeディレクトリになっていたと思います。
Windowsの場合、
C:/Documents and Settings/user.name/vimfiles
が、Linuxの~/.vimに該当します。
なので、Windowsシンボリックリンクを作成して

ln -s dotfiles/.vim vimfiles

などとしておけばよい…のですが、おそろしいことに
Windowsシンボリックリンクが作れません。
まぁそれでちょっとググルと

WindowsXPシンボリックリンクの作成
http://tomemo22.seesaa.net/article/95193435.html

という記事がすぐに見つかって、
たしかにこのとおりやったらできました。

ちなみにWindows上でvim環境を構築する際に、
git bashがものすごくクオリティが高くて(コマンドプロンプトと比べて)
感動したので、これで作業とかするといいかなと思います。

msysGitでWindowsからGitを使う
http://www.atmarkit.co.jp/fcoding/articles/msysgit/msysgita.html

所感

.vim以下が綺麗になってすごくhappyかなと思います。
Linux環境でvimだけどWindowsでは(g)vimじゃないとか
ちょっとよくわからないです。
Gvimもやっぱりおすすめです。

参考資料とおすすめエントリ(vim全般)

- vimプラグインの管理をpathogen.vimにした
http://d.hatena.ne.jp/mkataigi/20101107/1289134775

参考にしたわけではないですが記事を書いている途中に発見した記事
(こっちのがコマンドとか詳しい気が…)

- Mac OSXでのvim環境整理。.vimrcやらオヌヌメPlug inやらまとめ。
http://d.hatena.ne.jp/yuroyoro/20101104/1288879591

全然今回の記事に関係ないですが、本気だして書かれたと心から思うエントリなので
ぜひ一読していただきたいものです。

- vimで効率的にコードを書くための小技
http://d.hatena.ne.jp/bonar/20070415/1176651778
結構古いエントリですがvimの基礎的な動きがあるのでいいと思います。
1000ブクマ超えてる!

- pathogen.vim みたいなことをする rtputil.vim ってのを作った
http://d.hatena.ne.jp/thinca/20110215

id:thincaさんのvimプラグインrtputil.vimです。
pathogen.vimより細かな設定が出来るみたいです。

- pathogen.vim
http://www.vim.org/scripts/script.php?script_id=2332

- gvim
http://www.kaoriya.net/
いつもお世話になっております。Gvimをダウンロードできます。

最後に

今年の6月ボーナスがでたら1万円ウガンダに寄付します。
vimプラグインに関してはまた別途エントリ書きます。