git と mercurial の diff を美しく表示するために必要なたった 1つの設定 (原題: diff-highlight 1.0.0 をリリースしました)
Git の diff を美しく表示するために必要なたった 1 つの設定 #git にインスパイアされて作り始めた
diff-highlight にあれこれ手を入れ、1.0.0 として正式リリースしました。
diff-highlight と git-contrib/diff-highlight の違い
差分の中で +/- の行数が一致していないときのハイライトの扱い
git-contrib/diff-highlight での表示
+/- の行が一致していないとハイライトされません。
diff-highlight では、マッチする行を認識してハイライトします。
+/- の行数が一致しても、文字単位でのハイライトをしてくれないケースがある
git-contrib/diff-highlight での表示
差分の 1行目同士を比較しているため、pager の行がハイライトされていません。
diff-highlight では、マッチする行を認識するよう改良されています。
一行で 2箇所書き換えた場合は、ハイライト幅がとても大きくなる
git-contrib/diff-highlight での表示
変更箇所は 2箇所(クオートのみ)ですが、それをまたがるように長くハイライトされてしまいます。
diff-highlight では、変更箇所とその周辺だけをハイライトするよう改良しました。
インストール方法
pip コマンドでインストールします。
$ sudo pip install diff-highlight
pip コマンドが見つからない場合は yum や apt で python-pip パッケージをインストールしてください*1。
git で使う場合
$HOME/.gitconfig に pager の設定を追加するだけです。
[pager] log = diff-highlight | less show = diff-highlight | less diff = diff-highlight | less
色を付ける場合は color.ui を設定しておくと幸せになれるでしょう :-)
[color] ui = true
mercurial で使う場合
$HOME/.hgrc に color, diff_highlight 拡張を追加してください。
[extensions] color = diff_highlight =
その他の場合
diff-highlight をフィルタとして利用すると diff コマンドの出力をハイライトさせることができます。
ただし、対応しているのは unified diff 形式だけなので、diff には -u オプションを付けてください。
$ diff -u file1 file2 | diff-highlight
もし less や lv を使う場合はエスケープシーケンスを表示するオプションを付ける必要があります。
$ diff -u file1 file2 | diff-highlight | less -r $ diff -u file1 file2 | diff-highlight | lv -c