Windows で .vimrc を github にあげて管理しようと思ってハマった

2012/12/15

前は手軽さから gist に .vimrc と .gvimrc をアップしてました。が、最近「やっぱ github にあげたほうが楽なんじゃ」と思ってきて、いざやろうとしたら色々はまったのでメモ。

.vimrc と .gvimrc の場所

私は D:\tool\vim 内に .vimrc と .gvimrc を入れていました。理由は vim フォルダだけコピーすれば Vim 関連が丸ごと楽にバックアップできたからです。Vim のプラグイン管理を neobundle.vim で行うようになったのもあり、今となっては vim フォルダにまとめる意味もあんまりないのでこれは変えても良いんですけどなんとなく。

ローカルリポジトリの場所

どこでもいいのですが、私は ~/dotfiles/ を dotfiles のローカルリポジトリとしました。
※「~」はユーザーディレクトリです。Windouws7 だと「D:\Users\ユーザー名」になると思います。

シンボリックリンクをはる

まずローカルリポジトリである「~/dotfiles/」内に .vimrc と .gvimrc のシンボリックリンクを作りました。元の .vimrc などの場所は D:\tool\vim のままでやろうとしたわけです。

さあ push するぞー! -> エラーだよ!
シンボリックリンクは push しようとするとエラーになります。まぁそうか…と思い、じゃあということで逆にすることに。

元の .vimrc などをローカルリポジトリである「~/dotfiles/」内において、D:\tool\vim にはこれらのシンボリックを置く形に変更。

さあ push するぞー! -> 今度はできたよ!これで push は無事にできました。

.vimrc を編集したらシンボリックリンクが切れてる!?

私は以下のように .gvimrc に書いておき、即座に .gvimrc や .vimrc が編集できるようにしています。

" vimrc の設定環境変数
let $MYVIMRC = '$VIM/.vimrc'

" vimrcを即座に開く
nnoremap <Space>/
\        :<C-u>edit $MYVIMRC<CR>

これで <Space>/ を押して .vimrc を開き、編集して保存をすると…あれ、シンボリックリンクが切れてる!
.vimrc を「ファイル>開く」から開いた場合にはちゃんとシンボリックリンク元を開いてくれるのですが、上のように即座に開く設定を書いてそこから開いた場合にはそうならないようです。気づかないでしばらく悩んでしまいました…。

シンボリックリンクが切れるのでは困るので、以下のように即座に開くファイルを元ファイルに変更。良い感じになりました。

" vimrc の設定環境変数
let $MYVIMRC = '$HOME/dotfiles/.vimrc'

" vimrcを即座に開く
nnoremap <Space>/
\        :<C-u>edit $MYVIMRC<CR>

そんなこんなで無事、やりたかったことが出来るようになりました。良かった良かった。