MsysGitのvim、カレントディレクトリがどこであろうと相対パスの基準ディレクトリがホームになる

[~/aaa/bbb] $ vim hoge
 ( ~/hoge が開かれる )

いやもう本当に意味不明なんですが何これ。環境変数HOMEを設定してるのが影響してるのか? (追記: vimrcでcd ~してるのが原因っぽい)
このせいでgit commitがうまく動かない。

絶対パスを指定すると正しく開けるので「第一引数を絶対パスにしてvimに渡すコマンド」を作成してEDITORに設定すれば解決する…… と思ったらこのbash絶対パス取得コマンドがないっぽい…… のでそこから作る。

$ cat /bin/abspath
#!/bin/sh
if (echo $1 | ruby -e'a=$<.read;exit (a.split("")[0]=="/") ? 0 : 255'); then
        echo $1
        exit 0
fi
echo `pwd`/$1

rubyがないと動かないよ!(MsysGitには同梱されておりませんが僕の環境にはあるので使いました)

で、エディタコマンド。

$ cat /bin/e
#!/bin/sh

if [ $# == 0 ]; then
  vi
  exit $?
fi
TARGET=`abspath $1`
vi "$TARGET"

をEDITORに登録(絶対パスで/bin/eと指定したらgit commit時にパス名周りのエラーが)

$ export EDITOR=e

で、めでたくgit commit成功。
MINGWの挙動がさっぱりわからなくて(c:/homeと/c/homeとc:\homeという形式がありどのタイミングでどれに展開されるのかわからない上/binが処理過程のどこかで展開されてc:\Program Files\Git\binになったりする、ほんと謎)非常に苦心しました。なんか物凄く無駄な努力してる感がありますね。