標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

「jj diff --color always | (カラー対応ページャ)」が Windows でうまくゆかない

\x1B[…;…m 形式のカラーシーケンスを受け付けるページャ(例えば拙作の nemo )で、Git 互換バージョン管理システム jj のバージョン間差分を見る時、出力が歯抜けになってしまう場合がある(差分が表示されるべき行が空行になったりする)

(例:文字コード変換のためにフィルターを入れようとした)

jj diff --color always | nkf32 -w | nemo

これは Windows のみ発生するケースで、どうやら CR と LF の間にカラーシーケンスが入ってしまうためのようだ。そのせいで、凝ったことをやってるページャはおかしくなる(逆に more.com などはまったく無傷)

この場合、Perl をかませて、単品の CR を削除し、LF を CRLF に変換すればよろしい。

jj diff --color always | nkf32 -w | perl -pe "s/\r//g; s/\n/\r\n/g" | nemo