diff charakterlich

9

Gibt es unter Linux ein stabiles Tool (Option / Plugin eines vorhandenen Tools: vimdiff, diff usw.), um zwischen zwei Textdateien zeichenweise zu unterscheiden?

Ich möchte, dass die längste gemeinsame Teilsequenz zwischen meinen beiden Dateien hervorgehoben wird. Dafür gibt es einen klassischen Polynom-Zeit- Algorithmus , aber die Standardwerkzeuge scheinen nur Zeile für Zeile zu funktionieren.

Valentas
quelle

Antworten:

2

Gutes Altes cmpmacht einen charakterlichen Unterschied. Es ist seit ungefähr 40 Jahren ein Teil von UNIX. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

Leider hört es beim ersten abweichenden Charakter auf, daher weiß ich nicht, ob diese Antwort für Sie nützlich ist.

Dominik R.
quelle
Vielen Dank. Ich habe gerade eine cmp -bl ...Antwort ausgeführt, nachdem ich diese Antwort gefunden hatte, und sie hat mehrere Unterschiede und ihre Positionen gemeldet. Meine Version ist cmp (GNU diffutils) 3.6.
Dzamo Norton
2

Installieren diffchar( Github-Link für Benutzer eines Plugin-Autoloaders). Seit Version 4.7 zeigt Vim bei aktiviertem Plugin automatisch genauere Unterschiede an:

Geben Sie hier die Bildbeschreibung ein

  • Sie können F7(die Standard-Keymap) drücken, um zwischen dem üblichen und dem Plugin umzuschalten. Neu zuweisen mit:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    Ersetzen <key>durch einen geeigneten Schlüsselcode.

  • Sie können mehr Farben verwenden:

    let g:DiffColors=100
    

Leider funktioniert dies nicht über Linien hinweg, so gut ich es beurteilen kann. Häufige Bereiche werden jedoch nicht hervorgehoben (und gefaltet, wenn sie zu lang werden), sodass Sie dies möglicherweise nutzen können.


Von meinem Vi und Vim Stack Exchange Post kopiert .

muru
quelle