Gitで日本語コメントを書いたら、文字化けしてしまった。
Qiita - msysgit で日本語を使いたいを参考に
設定してみたが、コミットログの文字化けだけがやはり治らず....
どうしたものかと、やってみた試行錯誤をまとめておきます。
(注:ものすごいイージーミスでした)
環境
- Windows7 + msysgit(git1.9.4)
- コミットログは、msysgit内蔵のVimで編集したい
- gitbash上では、文字コードをすべてUTF-8で扱いたかったので、以下の設定を.bashrcもしくは.bash_profileに設定
export LANG=ja.UTF-8
何故か.vimrcの設定が反映されない
.vimrcの作成
参考サイトには以下のようにある.
これらをまとめて $HOME/.vimrc に保存しておく。
.vimrcsetencoding=cp932 settermencoding=cp932 setfileencoding=utf-8setfileencodings=cp932,utf-8
で、この設定を $HOME(WindowsではC:\Users\***\)に保存して試したが、
なにやらうまく反映されていないっぽい.
$ vim
:setfencfileencoding=
設定してるはずなのに、空だと...?
.vimrc、認識されている?
そこで見つけたページがこちら.
Stackoverflow - Where is vimrc or vim profile for github's mingw32 shell on a Windows machine?
さっそく、自分のvimrcがgitbashに正しく認識されているか確認したところ...
$ vim --version | grep vimrc
system vimrc file: "$VIM\vimrc"
user vimrc file: "$HOME\_vimrc"
2nd user vimrc file: "$HOME\vimfiles\vimrc"
3rd user vimrc file: "$VIM\_vimrc"
.vimrc じゃなくて _vimrcじゃないかというイージーミス発見.
早速ファイル名変更.
vimrcのエラー
ファイル名変更した上で、反映されているか確認したが、
あいも変わらず fileencodingが空.
なんでだろうなぁ と眺めていたところ、
vimの起動時にエラーメッセージが一瞬表示されたような気がしたので確認.
$vim 2>vim_log; cat vim_log
Error detected while processing c:\Users\****\_vimrc:
line 3:
E474: Invalid argument: encoding=
line 4:
E518: Unknown option: cp932
line 5:
E518: Unknown option: utf-8
line 6:
E518: Unknown option: utf-8,cp932
Press ENTER or type command to continue
えっ?
$ cat ~/_vimrc
set number
set encoding= utf-8
set termencoding= cp932
set fileencoding= utf-8
set fileencodings= utf-8,cp932
こんなアホみたいなエラー出ていれば、vimrcが反映されるはずないだろ!
というわけで、以下のように、=で揃えていた部分を削除して、保存しなおした.
$ cat ~/_vimrc
set number
set encoding=utf-8
set termencoding=cp932
set fileencoding=utf-8
set fileencodings=utf-8,cp932
無事fencが反映され、コミットログを保存しても、文字化けしなくなりました.
まとめ
原因
Vimの設定ミスが原因で、コミットログがShift-JISで保存されていましたというオチ.
その設定ミスが、本筋と関係ないところで起きていたイージーミスだという残念っぷり.
- msysgit内蔵のvimが求める環境設定は .vimrc ではなく、 _vimrc
- vimrcを綺麗に整形しようとするな!
悟り
何事でも「うまくいかないな」と思ったら、上流の原因から当たること.
今回の場合、gitのコミットログが怪しいと分かった時点で、
エディタの設定から見直すのが近道だった.