Gitで日本語コメントを書いたら、文字化けしてしまった。
Qiita - msysgit で日本語を使いたいを参考に
設定してみたが、コミットログの文字化けだけがやはり治らず....
どうしたものかと、やってみた試行錯誤をまとめておきます。
(注:ものすごいイージーミスでした)
追記(2014-10-10)
元記事の kumazo さんからの指摘で、確認してみたところ、_vimrcではなく、.vimrcでも動作しました.
お好みの方でどうぞ.
環境
- Windows7 + msysgit(git1.9.4)
- コミットログは、msysgit内蔵のVimで編集したい
- gitbash上では、文字コードをすべてUTF-8で扱いたかったので、以下の設定を.bashrcもしくは.bash_profileに設定
export LANG=ja.UTF-8
何故か.vimrcの設定が反映されない
.vimrcの作成
参考サイトには以下のようにある.
これらをまとめて $HOME/.vimrc に保存しておく。
.vimrcset encoding=cp932 set termencoding=cp932 set fileencoding=utf-8 set fileencodings=cp932,utf-8
で、この設定を $HOME(WindowsではC:\Users\***\)に保存して試したが、
なにやらうまく反映されていないっぽい.
$ vim
:set fenc
fileencoding=
設定してるはずなのに、空だと...?
.vimrc、認識されている?
そこで見つけたページがこちら.
[Stackoverflow - Where is vimrc or vim profile for github's mingw32 shell on a Windows machine?]
(http://stackoverflow.com/questions/15651286/where-is-vimrc-or-vim-profile-for-githubs-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と変更しましたが、 .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でも動いたので、勝手に変換してくれてるのかもしれません
- vimrcを綺麗に整形しようとするな!
悟り
何事でも「うまくいかないな」と思ったら、上流の原因から当たること.
今回の場合、gitのコミットログが怪しいと分かった時点で、
エディタの設定から見直すのが近道だった.