2012/05/15

Recent entries from same category

  1. Zenn で Twitter bot 作成入門を書いた。
  2. プログラマーのための新しい情報共有コミュニティ Zenn で本を書いてみた。
  3. Windows ユーザは cmd.exe で生きるべき 2020年版
  4. Let's Encrypt を簡単操作できる CLI、Lego が MyDNS に対応した。
  5. golang でメモ専用コマンド「memo」作った。

WindowsをUNIXライクに使っておられる方も多いかと思います。僕もその一人で、僕はコマンドプロンプトを常に開きっぱなしの状態で作業します。
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 も問題なく扱えます
  • エスケープシーケンスを含んだテキストをカラー表示出来ます
gitであれば、~/.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
まぁこんなの使うのは変態くらいしかいないと思いますが、よろしければどうぞ。
Posted at by