とある地味なブログ

プログラミングとお絵かきに関する雑記。

NYAGOSのプロンプトに色を付ける

わたしのコマンドプロンプト、ダサすぎ・・・!?

Windowsのコンソールをリッチにしたい

今までは、Cmder + msysgit で頑張っていたが、 なんかCmderアップデートしたら設定壊れちゃった(テヘペロ☆ミ)ので、新たに

zenito9970.hatenablog.com

を参考に環境構築した。

プロンプトに色を付ける

日本語マニュアル

nyagos/nyagos_ja.md at master · zetamatta/nyagos · GitHub

を読むと、

shiena/ansicolor · GitHub

を使っているらしいので、このライブラリのReadme通りに設定してみると、色がつく。

例えば、自分の設定ファイルは、こうなっている。

f:id:sujoyu:20151016220820p:plain

set{
    PROMPT="\x1b[42;30m[$P]\x1b[0m$_\x1b[43;30m$$\x1b[0m$s"
}
  • \x1b[42;30mで背景と文字色を指定
  • [$P][~/Documents/workspace]を表示
  • \x1b[0mで色指定を元に戻す
  • $_で改行
  • $$$を表示

という感じ。

経緯

最初の記事の通りに設定すればだいたいうまくいくのだが、プロンプトに色を付ける方法がわからない。

MacとかLinuxとかなら、ANSIエスケープシーケンスなるものを利用すれば色がつくらしい。 Windowsコマンドプロンプトでも、XPまでならちょっといじれば$E[31mみたいにすれば色がつくようだ。

$EANSIエスケープシーケンスらしいのだが、Windows7では、ansiconとか、そういうアプリケーションを入れないと、色がつかないらしい。

Windows環境でRSpecなどの出力に色を付けるには - 萬由無事覚書

が、このansiconを入れてみると、Cmder(ConEmu)がエラーを吐く。(どんなエラーかメモるの忘れた)

改めて考えてみれば、Cmderに元々色がついてたんだからansicon相当の機能がすでに入っていると考えられる。

で、さんざん遠回りして、NYAGOS自身がANSIカラーを出力するライブラリを使っていることに気づいたということです。

うーんこの...