Différence de mots de couleur comme celle de git?

8

J'utilise depuis longtemps les git (colorés) --word-diffque je trouve géniaux. Je me suis retrouvé aujourd'hui dans une situation où j'avais deux cordes dont j'avais besoin pour comparer mot à mot et envie de quelque chose comme le diff de git.

Je connais wdiff+ colordiff, mais ses résultats ne sont certainement pas stellaires:

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

Y a-t-il une meilleure option autour? Je n'aime pas particulièrement ceux [-, -]et {+, +}.

Elysium dévoré
la source

Réponses:

6

Vous pouvez utiliser gitle propre surlignage de diff . Il peut mettre en évidence les différences de mots dans la diffsortie unifiée , et il peut également gérer les couleurs ANSI en entrée. Vous pouvez donc faire quelque chose comme ceci:

colordiff -u <(echo -e "foo abc\ndef") <(echo -e "foo dbcx\ndef") | diff-highlight
Satō Katsura
la source
Cela ne fonctionne que pour le cas trivial où il y a un seul mot changé sur la ligne. Lorsqu'il change plusieurs mots, il étire incorrectement la vidéo inversée sur des mots qui n'ont pas changé: colordiff -u <(echo -e "foo abc x y\ndef") <(echo -e "foo dbcx x z\ndef") | diff-highlight
Thomas Dickey
@ThomasDickey Il semble avoir besoin de deux mots pour se resynchroniser. , De toute façon est ce gitfait. haussement d'épaules
Satō Katsura