GNU wdiff の美味しさが理解出来ない

人の好みにケチ付けるようでなんだけれども。

前から知ってたかと思ってたら、記憶してたのは diff3 (3-way diff) であって、wdiff とは違ってた。いや、こやつの pygments lexer が欲しいつぅてる人がおってな。diff3 だったらもっと理解出来なかったところだが、あぁ、diff3 じゃなかったか、と。

ここまではまぁいいんだけど、実際に入れて動かしてみて。

うーん、何が嬉しいんだこれ?

それよりまずちょっと説明しにくいなこれ。日本語で説明すると、「単語単位の差異を見る」ための diff ツール:

1 me@host: ~$ echo 'I ate a purple banana.' > a
2 me@host: ~$ echo 'I ate a yellow banana.' > b
3 me@host: ~$ wdiff a b
4 I ate a [-purple-] {+yellow+} banana.

なんだけれどもね。なんだろなぁ、「単語単位」だとしてもだ、人間が読むのにはむしろ「side-by-side」表示で「差異のある単語を強調」の方が遥かに理解しやすいんじゃないかいね? WinMerge ならこうだよね:

生の CLI diff の場合、「-y」(または ---side-by-side) で「横に並べて表示」は出来るけれど、「差異単語強調」はしてくんないので、確かに「単語の差異が見たい!」と思う気持ちはわかる。でもそういうことであれば、diff -yを拡張した差異単語強調、にしたらいいのに。(WinMerge などの GUI な diff/merge ツールと同じアプローチね。)

ただしこれは「差異を見る」という行為が最終目的である場合の話。「wdiff の出力を再利用する」ことを考えると、割と面白いかもしれない。例えば変更前・変更後のテキストをスライドショー的に動かすような UI を作る、なんてことは、オリジナル diff の出力を使うよりも遥かに簡単に出来るだろう。


2019-02-22追記:
なんでこんなもんの PV が増えてるのかわからんのだが、読む人が一定数いるようなので一応。

この話、「pygments の lexer」から発生した話で、これの顛末は、「ワタシが wdiff 用の lexer を書いちゃった」である。要するに「共感は出来ないけれど、欲しい人がいるということであれば」と行動した、つーことね。