różnią się znakowo

9

Czy w systemie Linux jest stabilne narzędzie (opcja / wtyczka istniejącego narzędzia: vimdiff, diff itp.) Do różnicowania między dwoma plikami tekstowymi?

Chciałbym zobaczyć wyróżnioną najdłuższą podsekwencję między moimi dwoma plikami. Jest do tego klasyczny algorytm czasu wielomianowego , ale wydaje się, że standardowe narzędzia działają tylko linia po linii.

Valentas
źródło

Odpowiedzi:

2

Dobry stary cmpma charakterową różnicę. Jest częścią UNIX od około 40 lat. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

Niestety, zatrzymuje się na pierwszej różnej postaci, więc nie wiem, czy ta odpowiedź jest dla Ciebie przydatna.

Dominik R.
źródło
Dzięki. Właśnie cmp -bl ...znalazłem tę odpowiedź, która zgłosiła wiele różnic i ich pozycji. Moja wersja to cmp (GNU diffutils) 3.6.
Dzamo Norton
2

Zainstaluj diffchar( łącze Github dla osób korzystających z autoloadera wtyczek). Od wersji 4.7, z włączoną wtyczką, Vim automatycznie pokazuje dokładniejsze różnice:

wprowadź opis zdjęcia tutaj

  • Możesz nacisnąć F7(domyślna mapa klawiszy), aby przełączyć między zwykłą a wtyczką. Przypisz ponownie za pomocą:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    zastąpienie <key>odpowiednim kodem klucza.

  • Możesz użyć więcej kolorów:

    let g:DiffColors=100
    

Niestety, to nie działa w poprzek linii, najlepiej mogę powiedzieć. Jednak wspólne regiony pozostają un -highlighted (i złożone, jeśli rosną zbyt długo), więc może być w stanie skorzystać z tego.


Skopiowano z mojego postu wymiany Vi i Vim Stack .

muru
źródło