sedで「git blame」に色づけ

CUIで「git blame」を打っても全く色がつかずに見づらいと思っていたところで、会社の先輩がsedでログの標準出力に色を付けていたことを思い出し、やってみました。

colorize_git_blame.sed

#!/bin/sed -rf
s/\([a-z0-9]\+\)/\x1b[31m\1\x1b[0m/
s/\((\)\([a-z0-9]\+\)/\x1b[35m\1\x1b[0m\x1b[32m\2\x1b[0m/
s/\([0-9]\+\)\()\)/\x1b[33m\1\x1b[0m\x1b[35m\2\x1b[0m/
s/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\)/\x1b[34m\1\x1b[0m/

Macに始めから入っているsedでは何故か着色出来なかったので、homebrewでgnu-sedをインストール。

brew install gnu-sed

最後に下のようなエイリアスを作成。

function gbl(){
  git blame $@ | gsed -f "(sedファイルの場所)/colorize_git_blame.sed" | less
}

gbl FILE_NAME」でFILE_NAMEファイルの色付きblame が出来ます。


(上がデフォルトblame、下が色付きblame)

なお、git blameの出力を加工している場合はこれでは駄目かもしれないです。