GitBash in ConEmu で256色を表示させるまでの軌跡
ConEmu 上で GitBash を使い始めて、何やら256色表示できるらしいと聞いて色々知らべてみたら思わぬ地雷だった。
発端
GitBash を直接起動した場合、以下のように256色表示できる。これは、以下のシェルスクリプトで256色表示をテストしたところ。
- 参考 : colcheck.sh · GitHub
純正 GitBash であれば、256色表示できるし、コンソールバッファも有効である。
だが、同じシェルスクリプトを ConEmu 上で動作させている GitBash で実行すると、256色が正しく表示できない。
はてはて、何でだろうと思って調べて試行錯誤していたが、大変だったし、実現するには残念なトレードオフがある。
先に結論
設定次第で ConEmu 上の GitBash でも256色表示はできる。しかし、コンソールのバッファを切らないといけない。要するに画面上に見えている範囲しか残らないので、スクロール表示ができない。これは不便だ。
また、ホームディレクトリにコネクタが出力するログが残る。connector-23944.log
といったファイルがボコボコできて、コンソールの全てを記録しているみたい。ログローテーションもなくどんどん増えていくので鬱陶しいのだが、切り方がわからなかった。
具体的な設定方法
環境は Windows10 64bit。
- 以下のサイトから Cygwin-Connector をダウンロードする (最新版は
terminals.v0.7.4.7z
)。 - ダウンロードした
.7z
ファイルを解凍し、conemu-msys2-64.exe
を取り出す。- 32bit 版の OS の人は
conemu-msys2-32.exe
を使えばできると思う (未検証)。
- 32bit 版の OS の人は
conemu-msys2-64.exe
をC:\Program Files\Git\usr\bin\
配下にコピーする。- ConEmu で以下のように設定する。
- Features : 「Inject ConEmuHk」「ASNSI and xterm sequences」にチェックを付ける。
- Features - Colors : 「TrueMod (24bit color) support」にチェックを付ける。
- 同じく ConEmu の Startup - Tasks で以下のようなタスクを追加する。
"%ConEmuDir%\..\Git\git-cmd.exe" --no-cd --command=usr/bin/conemu-msys2-64.exe -l -cur_console:h0
これで完成。
先程の256色表示をテストするシェルスクリプトを実行してみる。
う~む綺麗。だがバッファを切らないといけないのがな…。
設定箇所のキャプチャ置いときます。
カラーチェックのスクリプト?は、ConEmu 内にもあるみたい。以下のように実行する。
cat "C:\Program Files\ConEmu\ConEmu\Addons\AnsiColors256.ans"
純正 GitBash では何もしなくとも256色綺麗に出るし、バッファも有効。でも ConEmu 上から起動した GitBash では殆どの色が灰色に抜け落ちる。
先程設定した Cygwin-Connector 経由であれば、ConEmu 上の GitBash からも256色表示できる。しかし、バッファを切らないといけない。イマイチ…。
参考文献
- Cygwin+screenで256 colorを有効にする
- 256色表示をテストするシェルスクリプトを公開していた記事。
- ConEmuからMSYS2のシェルを起動したときに256色対応させる - 水を見ると釣りがしたくなる
- 以下の公式記事を紹介していた日本語記事。
- ConEmu | cygwin/msys terminal connector
- 公式の記事。
- cmd.exe と awsome print - oogatta のブログ
- Enable 256 colour support over SSH · Issue #379 · cmderdev/cmder · GitHub
- ConEmu | ANSI X3.64 and Xterm-256 Support
- windows 10 - ConEmu + ls -- 256 colors not working - Super User
- MSYS2で快適なターミナル生活 - Qiita
- Connector for git-cmd.exe? · Issue #628 · Maximus5/ConEmu · GitHub
- terminal - Can't enable 256 colors in ConEmu - Stack Overflow
この文字色を変えているのは、ANSI エスケープシーケンスと呼ばれる特殊な文字を渡して実現しているみたい。よー分かってないので勉強します。
…
…あれ、そういやそもそも何で256色表示したかったんだっけ…?
You have no need in 256-colors In fact.