cmd.exe と awsome print

すっかり Windows での仕事に慣れたので、これまではそういうものだからと最初から諦めていたことも少しだけ調べてみたりしています。

cmd.exe で ANSI colors

cmd.exe 上でも ANSI 色エスケープシーケンス出力を視覚的な色に変換したいです。例えば awsome print の出力だとか。

ansicon

adoxa/ansicon

ありました。2005年からありました。さらっと書いてあるウェブサイトの方からバイナリをダウンロードし、シンプルには PATH を張って cmd.exe 中から ansicon を実行です。

f:id:oogatta:20140405111354p:plain

素晴らしい。

ConEmu

しかしよく考えたら ConEmu が対応してないはずが無いです。てかたまに色付いてるの見ます。実際公式にも対応してるって書いてあるし、 ConEmu の中で

H:\>type "C:\Program Files\ConEmu\ConEmu\Addons\AnsiColors256.ans"

としたら最高にカラフルな結果が帰ってきました

でも ap の結果にはどうやっても色が付きません。てことはこれ、 awsome print 側が何かの条件見てる可能性ありますね。しかし ANSICON では色が付くのになあ…。とかぶつぶつ思いながら ap のソース見たら

https://github.com/michaeldv/awesome_print/blob/master/lib/awesome_print/inspector.rb#L113

def colorize?
  AwesomePrint.force_colors ||= false
  AwesomePrint.force_colors || (STDOUT.tty? && ((ENV['TERM'] && ENV['TERM'] != 'dumb') || ENV['ANSICON']))
end

思いっきり ENV['ANSICON'] って書いてありました。というわけで、自分のコード中で AwesomePrint.force_colors = true するか、 ConEmu でも %ANSICON% に何か入れておく、って感じでしょうか。後者でしょう。

ConEmu の cmd.exe を上げるタスクに、 set ANSICON=1 とでも書いた bat ファイルを /K オプションに食わせるわせるようにしました。

素晴らしい。

f:id:oogatta:20140405121059p:plain

Clink

Clink

ちなみに Clink 使ってます。書いてある通り cmd.exe 用の readline って感じです。

自分、 git など可能な限り GUI アプリケーションで操作するタイプなので、自分が CLI に期待することはこれでそこそこ満たせるようです。