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 {+, +}.

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.