cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

最新版のjvgrepをコンパイルするにはgo言語とMercurialが必要だった

# go get github.com/mattn/jvgrep

というコマンドを実行するにはThe Go Programming Languageが必要だった。
しかも$GOROOT $GOPATHという意味不明な環境変数を設定しなければいけなかった。

さらに、それに使われているmahonia - Mahonia—a character-set conversion library for Go - Google Project Hostingを得るためには水銀の元素記号hgでおなじみ、もう一つのバージョン管理システムであるJapaneseMercurial - Mercurialが必要だった。

インストーラでインストールするのが嫌だったのでMercurial Cmd Portable 1.5.1 Development test 1 | PortableApps.com - Portable software for USB, portable and cloud drivesを適当なディレクトリに展開した上で、Mercurialにパスを通すことで対応した。

悲しいお知らせ

ここまで苦労して導入しても、Vimの'encoding'オプションを'utf-8'にしている場合、Windowsではなすすべもなく使えないらしい。

set grepprg=jvgrepにして:grepしたいのですが、日本語が通りません。

Vim側がutf-8で吐いた文字をコマンドプロンプトがcp932として呼んでしまうからですが、解消する方法を知りませんか?

http://lingr.com/room/vim/archives/2013/12/05#message-17739621

絶望

つまり現状ではコマンドプロンプトを使うのをやめるか、qfixgrepを使うしか解決策がないわけですね。
qfixgrepは余計なことを色々しているから好きにはなれないのですが。

http://lingr.com/room/vim/archives/2013/12/05#message-17740433

光明

qfixgrepの中身を見てみたが、つまり最悪、外部コマンドに渡すときにiconv()でエンコードを変換してやれば何とか出来るっぽい。

http://lingr.com/room/vim/archives/2013/12/05#message-17740591

おし。
exe 'grep '. iconv('ファイル', 'utf-8', 'cp932'). ' %'だと正常機能した。
つまり渡すときエンコードしてくれるラッパーコマンドを定義してそれを使えば当面は解決できる問題になった。

http://lingr.com/room/vim/archives/2013/12/05#message-17740802