Diferenças de palavras coloridas como as de git?

8

Há muito tempo que uso git (colorido), o --word-diffque acho incrível. Eu me encontrei hoje em uma situação em que eu tinha duas seqüências de caracteres que eu precisava comparar palavra por palavra e desejo por algo como o diff do git.

Estou ciente de wdiff+ colordiff, mas seus resultados certamente não são estelares:

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

Existe alguma opção melhor por aí? Eu particularmente não gosto daqueles [-, -]e {+, +}.

elísio devorado
fonte

Respostas:

6

Você pode usar gito próprio diff-realce do próprio . Ele pode destacar as diferenças de palavras na diffsaída unificada e também pode lidar com as cores ANSI na entrada. Então você pode fazer algo assim:

colordiff -u <(echo -e "foo abc\ndef") <(echo -e "foo dbcx\ndef") | diff-highlight
Satō Katsura
fonte
Isso funciona apenas para o caso trivial em que há uma única palavra alterada na linha. Quando várias palavras são alteradas, ele estende incorretamente o vídeo reverso entre palavras que não foram alteradas: colordiff -u <(echo -e "foo abc x y\ndef") <(echo -e "foo dbcx x z\ndef") | diff-highlight
Thomas Dickey
@ThomasDickey Parece precisar de duas palavras para sincronizar novamente. Enfim, é o que gitfaz. encolher de ombros
Satō Katsura 02/02