Vimの設定ファイルをWindowsとMac間で共有する時につまづいたことなど

最近はテキスト編集をするときにはちょこちょこVimを使っている。
その際、Vimを使いながら少し前から設定ファイルをいじり始めたが、WindowsMacとで別のファイルを利用して編集していたため、別マシンで設定した値を他の環境で反映できていなこともよくあった。
そのため今回、Githubを使ってWindowsMacとで設定ファイル(vimrcとgvimrc)を同期させようと、以下のエントリを参考にチャレンジしてみた。
そろそろしっかりvimを使う。dotfilesのgithub管理とvundleの導入。 - 南極の図書館
そろそろしっかりvimを使う。github+vundleを利用したWindowsとの同期。 - 南極の図書館
このとき若干つまづいたことがあったので、備忘録も兼ねてメモ。

Vundleを導入した際の.gitmodulesファイル

上記エントリのように、今回Githubにdotfilesを上げる際にVimプラグイン管理としてVundleも同時に導入した。
ただここで注意するべきなのは、Vundleをサブモジュールとして導入した際の.gitmodulesファイル。
上記エントリは絶対パスでサブモジュールを導入しているが、この後の.gitmodulesファイルは、

[submodule "/Users/WK6/dotfiles/vimfiles/vundle.git"]
    path = /Users/WK6/dotfiles/vimfiles/vundle.git
    url = http://github.com/gmarik/vundle.git

のように、pathが絶対パスになってしまう。
このままだと他の環境に(特にWindows)設定ファイルを持ってきた後でサブモジュールを導入しようとしても、パス指定が間違っているため失敗する。
そのため、サブモジュールは最初から相対パスで導入するか、pathを相対パスに変更しておく。
dotfilesフォルダ以下にvimfiles/vundle.gitフォルダを作成し、そこでVundleを導入する場合は以下のような感じ。

[submodule "vimfiles/vundle.git"]
    path = vimfiles/vundle.git
    url = http://github.com/gmarik/vundle.git

参考:vimのdotfilesをgithubで管理してmacとwindowsで共用する | 0.750[Gs]

Windows環境で.vimrc(.gvimrc)へのリンクの張り方

上記エントリ(2番目)のコメント欄にも同様の報告があるが、Windows7(たぶんVistaも)でdotfilesフォルダだけでなく.vimrc, .gvimrcへのリンクもシンボリックリンクとして作成した場合、WindowsVim(gVim)ではファイルを開くことはできるものの、保存するとリンクを張った先のファイルに書き込まず、別ファイルを新たに作成しシンボリックリンクファイルの上から上書きしてしまう。
そのため、.vimrcと.gvimrcへのリンクはハードリンクとして作成することにした。
いちいち管理者権限でコマンドプロンプトを実行してコマンド叩くのもめんどくさかったので、以下のようなバッチファイルを作成。
Windows7で動作を確認。たぶんVistaでも動く。

@echo off

rem Vimのディレクトリを指定
set vim_dir="C:\Users\WK6\gvim"
rem Githubから持ってきたdotfilesのディレクトリを指定
set dotfiles_dir="C:\Users\WK6\dotfiles"

rem .vimrcと.gvimrcはハードリンク
fsutil hardlink create "%vim_dir%\_vimrc" "%dotfiles_dir%\.vimrc"
fsutil hardlink create "%vim_dir%\_gvimrc" "%dotfiles_dir%\.gvimrc"

rem vimfilesへはシンボリックリンク
mklink /d %vim_dir%\vimfiles %dotfiles_dir%\vimfiles

上記バッチファイルのvim_dirとdotfiles_dirの値を適宜書き換え、あとはバッチファイルを管理者権限で実行すればOK.

そんなわけで

そこそこいい感じにWindowsMacVim環境の同期ができた。
ちなみに私がGithubに上げているdotfilesは以下。
GitHub - WK6/dotfiles
まだ設定ファイルの記述もGithubの使い方自体も慣れていないので荒削りなところは多々ある感じ。
気になるプラグインとかよさげな設定を見つけたらちょこちょこ更新していきたい。