msysを使っても良いのですが、bashはbashで色々と問題もあり
/c/Program\ Files
みたいなパスでは問題が起きたり、メールに貼り付けられているパスをコピペして動かないのは苦痛であったりもします。なので常にコマンドプロンプト(cmd.exe)を使い、vimやlessというUNIX向けツールを使っています。
gitやmercurialでのdiff表示やlog表示の際、ページャは不可欠です。lessを使っているmsysgitでもある程度綺麗に表示されますが、マルチバイトでの検索が出来なかったり、nkf等といったフィルタを噛まさないと表示出来なかったりしました。
lessの場合は以前パッチを書いたlessを使えばコマンドプロンプトでもフィルタ無しにutf-8が表示出来るのですが、自動判定や他のエンコーディングに弱かったりもしました。
そういった理由から日本のUNIXユーザの中にはlessの変わりにlvを使う方も多いです。おそらく日本語を読む事についてはlessよりも高機能なので、ずっとWindowsでもlvを使いたいなと思ってました。
さらにWindows向けのgitに含まれるlessはなぜか稀に最終行の色が綺麗に終端しておらず、
git diff
を表示し終えた後も画面が緑色のままになったりして、困っていました。先日からlvをWindowsにポーティングし始めていて、ようやくlessと同等にカラー表示出来る様になったので公開しようと思います。
- Windows版lessの代わりに使えます
- フィルタ無しに日本語utf-8が示出来ます
- iso-2022-cn, iso-2022-jp, iso-2022-kr, euc-china, euc-japan, euc-korea, euc-taiwan, shift_jis, big5 といったアジア圏のエンコーディングが扱えます
- UTF-7, UTF-8, iso-8859-1 ... iso-8859-9 も問題なく扱えます
- エスケープシーケンスを含んだテキストをカラー表示出来ます
~/.gitconfig
で
[core]
pager = lv -Iu8
こう書いておけば使えます。またmercurialではtpager extensionと併用すればwindowsでも色つきdiff表示が出来ます。
alexandrul / TPager / overview — Bitbucket
Mercurial pager with color support on Windows
https://bitbucket.org/alexandrul/tpager
~/.hgrc
で
[extensions]
hgext.color=
# tpager.pyへのパス
tpager = ~/tpager/tpager.py
[color]
# win32ではなくansiにする事でエスケープシーケンスを吐く
mode = ansi
[pager]
# ページャを使うコマンド
attend = annotate, cat, diff, export, glog, help, log, qdiff, status, tip
# おまじない
hg16mode = yes
# どのページャを使うか
pager = lv -Iu8
この様に設定すれば色つきのdiffが表示出来る様になります。リポジトリのmasterブランチは、オリジナルそのままにしてあります。windowsブランチに僕が手を加えた物がpushされています。
mattn/lv-window - GitHubまぁこんなの使うのは変態くらいしかいないと思いますが、よろしければどうぞ。
windows port of lv
https://github.com/mattn/lv-windows