ある日突然「diffってみづらい!」と思ったので調べてdiff力アップ入門してみました。初歩的な内容です。
標準のまま
colordiff入れる
これだけでもずいぶん変わりました。とりあえずcolordiff採用。
diff にaliasを貼ります。
if [[ -x `which colordiff` ]]; then
alias diff='colordiff'
fi
-u オプションをつける
diffに-uオプションをつけるとgitで見覚えるのある感じになりました。unified形式っていうらしいです。
diff -u file1 file2
-y オプションをつける
diffに-yオプションをつけるとファイル内容を左右に並べて比較表示してくれました。
差分のある部分は|や>などで目印つきつつ、colordiffなら色がつきます。
ちなみにこの出力をlessに渡すと盛大に文字化けしました。colordiff -y file1 file2 | less -R
とすればよいらしいです。
.colordiffrcで色設定も変更できます。
banner=no
color_patches=no
plain=off
newtext=green
oldtext=cyan
diffstuff=yellow
cvsstuff=white
-y --suppress-common-lines をつける
-y
オプションにさらに--suppress-common-lines
オプションをつけると変更のある行だけを表示してくれます。
思い切りばっさりと関係ない行を消してくれるのですが、こんどは情報が少なすぎる感が・・・。
これに行番号表示できないですかね。
--suppress-common-linesオプションを覚えるのは厳しいのでalias diff='diff -y --suppress-common-lines'
とalias設定したらオプションの競合でdiff -u
が使えなくなってしまったのでalias diify='diff -y --suppress-common-lines'
とalias設定しました。
番外 vimdiffを使う
vimに標準でvimdiffというものがついてるのを知りませんでした。
見た目も使い勝手も良い感じだと思います。
% vimdiff file1 file2
# もしくは
% vim -d file1 file2
キー | 操作 |
---|---|
dp | 左の差分を右へマージ |
do | 右の差分を左へマージ |
]-c | 次の差分へジャンプ |
[-c | 前の差分へジャンプ |