MercurialなVimライフ

この記事は Vim Advent Calendar 2011 の38日目のエントリーです。

皆様明けましておめでとうございます。今回は@wiredoolの提供でお送りします。

vimのplugin管理においてはgit系勢力が大きいですね。gitは素晴らしいものですがWindowsな環境ではなんとなく手を出しにくいこともあるかもしれません。
そこで今回はWindows環境でのMercurialを使ったplugin管理について紹介します。

TortoiseHg のインストール

TortoiseHgはGUIMercurialです。hgというのはMercurialのコマンド名で水銀の元素記号が由来だそうです。下記のページからインストーラを入手できます。
32bitと64bitバージョンがあるので該当するものを拾ってきましょう。64bitに32bit入れようとしても怒られます……
http://tortoisehg.bitbucket.org/ja/

ポチポチとクリックしていくだけでインストール完了です。

ついでに日本語化してみましょう。
ほとんどの部分は自動的にOSの言語で動いてくれますが、一部手動で設定する必要があります。
右クリックのメニュー文字を変えたい場合はインストール先(通常 C:\Program Files\TortoiseHg)のi18n\cmenu\thg-cmenu-ja.regを実行します。
hgコマンドのメッセージを変えたい場合は環境変数LANGを作ってja_JP的なものを指定します。

hg-git のインストール

今度はhg-gitを設定してhgのコマンドからgitのリポジトリを操作できるようにします。Win+R cmd などでコマンドプロンプトを起動し、インストール用の好きなディレクトリに移動します。
次のようなコマンドを実行することで必要なファイルを取得することができます。

cd C:\my\path\lib
hg clone https://bitbucket.org/durin42/hg-git

そしてホームなディレクトリにある Mercurial.ini に3行ほど追記します。ファイルが無ければ作りましょう。
指定するパスはcloneされたhg-gitではなくて、その中にあるhggitなので注意しましょう。

[extensions]
hgext.bookmarks =
hggit = C:\my\path\lib\hg-git\hggit

NeoBundle のインストール

最後にplugin管理pluginとしてNeoBundleを設定します。
先ほどのhg-gitと同じようにインストールしたいディレクトリに移動してcloneを行います。
cloneのアドレスの最初をgit://にすることでhg-git経由のクローンになります。

mkdir ~\.vim
cd ~\.vim\
hg clone git://github.com/Shougo/neobundle.vim.git

あとはvimrcに必要なpluginを書くだけです。
パラメータとして ,{'type': 'hg'} を与えるとhgのコマンドを利用してくれます。
たまーに忘れがちですが NeoBundle の行にコメント書くことはできないので注意しましょう。コメントのつもりでもNeoBundleに変な値が渡ってエラーになります。

"NeoBundle {{{
filetype off
if has('vim_starting')
  set runtimepath+=~/.vim/neobundle.vim/
  call neobundle#rc(expand('~/.vim/bundle/'))
  "bundle の場所を指定しない場合は空でok
  "call neobundle#rc() 
endif

NeoBundle 'githubのユーザー名/リポジトリ名', {'type': 'hg'}

"複数指定する場合はこんな方法も
let myopt = {'type': 'hg'}
NeoBundle 'githubのユーザー名/リポジトリ名', myopt
NeoBundle 'www.vim.org に登録されているスクリプト名', myopt
NeoBundle 'git://host/path/to/repo.git のような直接指定', myopt
"gitが通らないネットワークではこんな方法もあるのですが
"cloneは通るのにpullが通らないので毎回消す必要が……(hg-gitの問題です)
NeoBundle 'git+https://host/path/to/repo.git のような直接指定', myopt

unlet myopt
filetype plugin indent on
" }}}

ここまで終わったらvimrcを読み直してインストールコマンドを実行するだけです。

:NeoBundleInstall 

最後に

ということでgitがなくてもgithubの恩恵は受けられます。
選択肢が多いのは良いことですね。

明日は @kanno_kanno さんです。
そろそろ1周目は終わりそうですが、2周目以降もまだまだ募集しているようなので興味のある方は是非ともご参加下さい。