¿Diferencia de palabras de color como la de git?

8

He estado durante mucho tiempo usando git's (de color) --word-diffque me parece increíble. Me encontré hoy en una situación en la que tenía dos cadenas que necesitaba comparar palabra por palabra y ansiaba algo como la diferencia de git.

Soy consciente de wdiff+ colordiff, pero sus resultados ciertamente no son estelares:

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

¿Hay alguna opción mejor? Particularmente no me gustan esos [-, -]y {+, +}.

elysium devorado
fuente

Respuestas:

6

Puede usar gitel propio diff-highlight de 's . Puede resaltar las diferencias de palabras en la diffsalida unificada , y también puede hacer frente a los colores ANSI en la entrada. Entonces puedes hacer algo como esto:

colordiff -u <(echo -e "foo abc\ndef") <(echo -e "foo dbcx\ndef") | diff-highlight
Satō Katsura
fuente
Eso solo funciona para el caso trivial donde hay una sola palabra cambiada en la línea. Cuando cambia varias palabras, estira incorrectamente el video inverso a través de palabras que no cambiaron: colordiff -u <(echo -e "foo abc x y\ndef") <(echo -e "foo dbcx x z\ndef") | diff-highlight
Thomas Dickey
@ThomasDickey Parece que se necesitan dos palabras para volver a sincronizar. De todos modos, es lo que githace. encogimiento de hombros
Satō Katsura