colordiffを使わずにdiffをカラー表示する

diffの出力は標準でカラー表示されない。 カラー表示するためのコマンドとしてはcolordiffがあるが、多くの場合標準では入っていないためインストールする必要がある。 ところが、diffのカラー表示はgitを使ってもできることを知った。

git diffは比較するファイルがgitの管理下になくても使える。 また、-uオプションをつけなくてもunified diff形式で表示される。

20140703003336

昨今の開発環境ではgitがインストールされている場合が多く、このような環境では便利である。

エイリアス関数を作る

gitがインストールされているときはgit diffを使うエイリアス関数(bash用)を作ってみた。

diffu() {
    local DIFF
    if hash git &>/dev/null; then
        DIFF="git diff --no-index"
    else
        DIFF="diff -u"
    fi
    if [[ $# -eq 1 ]]; then
        $DIFF "$1~" "$1"
    else
        $DIFF "$@"
    fi
}

引数が1個のみの場合は、emacsvimが作るバックアップファイルとのdiffを試みる。