tig は CUI の git コマンド・ラッパーで、すでにたくさんの人たちからその高速性と使い勝手の良さを紹介されています。
かくいう私も、生きているブランチ数が100に迫るプロジェクトに仕事で関わるようになってから SourceTree の遅さに耐えられなくなり、機会あるごとに「tig いいよ tig」と布教につとめています。
リポジトリのコミットグラフを見ながらそれぞれの変更個所を同じターミナル画面の中で確認できる機能は特に便利です。
ですがしかし、UTF-8 モードではコミットグラフの表示が乱れてしまうのでしかたなく ASCII モードで表示しているという方々も多いようです。
ズレたグラフの例 (Myrica M 12pt の OS X ターミナル)
安心してください、そのズレは直せます。
グラフがズレる原因
専門外なので簡単にはしょって説明しますと、Unicode において文字幅が Ambiguous(曖昧) と定義されている文字によるものです。
Wikipedia 東アジアの文字幅 にはギリシア文字やキリル文字がその例として挙げられていますが、ほかに幾何学記号や罫線なども曖昧幅の文字に含まれています。
これら曖昧幅の文字は、日本語など東アジア圏の言語では幅の広い文字(いわゆる全角文字)として扱い、それ以外の言語では幅の狭い文字(いわゆる半角文字)として扱われるという、なかなか困った性質を持っています。
tig は1バイト文字コードの文化圏で開発されたソフトウェアですから、当然のように罫線も記号も半角1文字分の幅しかないと思っているわけですね。
マルチバイト文字コードの端末で「きれい」なグラフを表示するには、以下のふたつの方法が考えられます。
- 曖昧幅の文字を「幅の狭い文字」として作成された日本語フォントを使う
- tig のソースコードにパッチをあてて Japanese only にしてしまう
それでは続いて、それぞれの方法を説明していきましょう。
曖昧幅の文字を「幅の狭い文字」として作成された日本語フォントを使う
ごめんなさい、日本では「罫線は全角文字」の時代が長く続いているため、実際にそういうフォントがあるかどうか知りません。
でも、OS X のターミナルで Menlo フォントを指定してやれば、グラフはきれいに表示されます。
グローバル・スタンダードに合わせた例 (Menlo 12pt の OS X ターミナル)
Menlo は Mac OS X 10.6 からシステム標準で搭載されている英語フォントですが、ターミナルでは問題なく日本語も表示されますので、Mac を買ってきてから何も設定をいじっていなければこんな感じになるはずです。
ターミナルの「設定」→「詳細」で曖昧な文字幅を広くする設定を はずして おくことをお忘れなく。
tig にパッチをあてて Japanese only にする
Menlo だとなんかカワイイが足りないんだよね …… ということで、どうしてもフォントを変更していたい人は、tig に「ここは日本だ、お前も日本人になれ」と教え込むしかないでしょう。
日本人が求めるグラフの例 (Myrica M 12pt の OS X ターミナル)
幸いに tig のソースコードは GitHub で公開されていますから、誰でもカスタム tig を作ることができます。
tig に日本帰化パッチをあてる手順
1. リポジトリのクローンを作る
mkdir git_repo
cd git_repo
git clone https://github.com/jonas/tig.git
2. パッチをあてる
休日の半日でとりあえず作ってみた パッチ を置いておきますので、煮るなり焼くなり参考にするなり自由に使ってください。
バグがないように努力はしましたが、まだ何か残っているかもしれません。(要するに、自己責任でお願いします)
cp ~/Downloads/tig_japanize.patch tig/
cd tig
patch -p0 < tig_japanize.patch
3. tig をビルドする
make configure
make
4. tig をインストールする
make install
実行ファイル tig が ~/bin/
に、設定ファイル tigrc が ~/etc/
にインストールされます。
インストール先のパスが気に入らない人は、自分の手でコピーしましょう。
5. まだズレてる!?
~/etc/tigrc
を set line-graphics = utf-8
に書き換えて、期待したとおりに表示されるかどうか試してみてください。
もしも罫線がそろわずにズレていたら、ターミナルの「設定」→「詳細」で曖昧な文字幅を広くする設定を 入れて ください。
GitHub に置いときました (2016-09-26: 追記)
たまに参考にしてくれる人がいるのと、御本家のバージョンが 2.2 に更新されていたので、GitHub に リポジトリ を公開しました。
歴史的経緯の産物とはいえ、曖昧幅の文字なんてものはなるべく早く消えてほしいものです。