Farbige Wortunterschiede wie bei Git?

8

Ich habe lange Zeit Git's (farbig) benutzt, --word-diffwas ich großartig finde. Ich befand mich heute in einer Situation, in der ich zwei Saiten hatte, die ich brauchte, um Wort für Wort zu vergleichen und mich nach etwas wie dem Diff von git zu sehnen.

Ich bin mir wdiff+ bewusst colordiff, aber die Ergebnisse sind sicherlich nicht herausragend:

me@me:~$ wdiff <(echo -e "abc\ndef") <(echo -e "dbcx\ndef") | colordiff
[-abc-]{+dbcx+}
def

Gibt es eine bessere Option? Ich mag es nicht besonders diejenigen [-, -]und {+, +}.

verschlungenes Elysium
quelle

Antworten:

6

Sie können gitdas eigene Diff-Highlight verwenden . Es kann Wortunterschiede in der einheitlichen diffAusgabe hervorheben und auch ANSI-Farben bei der Eingabe verarbeiten. Sie können also so etwas tun:

colordiff -u <(echo -e "foo abc\ndef") <(echo -e "foo dbcx\ndef") | diff-highlight
Satō Katsura
quelle
Dies funktioniert nur für den trivialen Fall, in dem ein einzelnes Wort in der Zeile geändert wird. Wenn sich mehrere Wörter ändern, wird das umgekehrte Video fälschlicherweise auf Wörter ausgedehnt, die sich nicht geändert haben: colordiff -u <(echo -e "foo abc x y\ndef") <(echo -e "foo dbcx x z\ndef") | diff-highlight
Thomas Dickey
@ThomasDickey Es scheint zwei Wörter zu benötigen, um neu zu synchronisieren. Wie auch immer, es ist was gittut. Achselzucken
Satō Katsura