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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.