Kata-diff berwarna seperti git?

8

Saya sudah lama menggunakan git (berwarna) --word-diffyang menurut saya luar biasa. Saya menemukan diri saya hari ini dalam situasi di mana saya memiliki dua string yang saya butuhkan untuk membandingkan kata demi kata dan keinginan untuk sesuatu seperti diff git.

Saya mengetahui wdiff+ colordiff, tetapi hasilnya tentu bukan bintang:

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

Apakah ada pilihan lain yang lebih baik? Aku tidak terlalu suka mereka [-, -]dan {+, +}.

melahap elysium
sumber

Jawaban:

6

Anda dapat menggunakan git's sendiri diff-highlight . Ini dapat menyoroti perbedaan kata dalam diffoutput terpadu , dan juga dapat mengatasi warna ANSI pada input. Jadi Anda dapat melakukan sesuatu seperti ini:

colordiff -u <(echo -e "foo abc\ndef") <(echo -e "foo dbcx\ndef") | diff-highlight
Satō Katsura
sumber
Itu hanya bekerja untuk kasus sepele di mana ada satu kata yang berubah di telepon. Ketika beberapa kata berubah, itu salah membentang video terbalik di kata-kata yang tidak berubah: colordiff -u <(echo -e "foo abc x y\ndef") <(echo -e "foo dbcx x z\ndef") | diff-highlight
Thomas Dickey
@ThomasDickey Tampaknya perlu dua kata untuk sinkronisasi kembali. Lagi pula, itu adalah apa yang gitdilakukannya. shrug
Satō Katsura