Ich habe eine Quelldatei mit zwei ähnlichen, aber subtil verschiedenen Abschnitten. Ich möchte die beiden Abschnitte in ein Unterprogramm mit einem Parameter zusammenführen, der die feinen Unterschiede behandelt, aber ich muss sicher sein, dass ich sie alle kenne, damit ich keine vermisse In solchen Fällen mache ich normalerweise jeden Abschnitt in eine separate Datei und verwende dann tkdiff oder vimdiff, um die Unterschiede hervorzuheben. Gibt es eine Möglichkeit, die Zwischendateien zu überspringen und nur zwei Teile derselben Datei zu vergleichen?
Das linediff Plugin für Vim funktioniert gut für mich. Wählen Sie einen Teil Ihrer Datei visuell aus und geben Sie :Linediff
ein. Wählen Sie den anderen Abschnitt visuell aus, und geben Sie :Linediff
ein. Es wird vim in den vimdiff -Modus versetzt, der nur die beiden zuvor markierten Bereiche anzeigt. Geben Sie :LinediffReset
ein, um den vimdiff-Modus zu beenden.
Weitere Informationen:
KDiff3 ist Open Source und auf verschiedenen Plattformen verfügbar, einschließlich Win32 und Linux.
Es hat die Funktion "manuelle Ausrichtung", die von Gishu über Beyond Compare diskutiert wird (was übrigens nicht persönlich verwendet wurde) aber wird von vielen Leuten, die ich kenne, als ein großartiges Werkzeug angesehen.)
Siehe diese Antwort für weitere Beispiele.
Ich benutze Beyond Compare .
Es ermöglicht Ihnen, eine Linie auf jeder Seite auszuwählen und sagen "Manuell ausrichten". Dies sollte für Sie gut funktionieren.
Ich habe @ antwortungswidrigs Antwort in eine bash-Funktion umgearbeitet (ich war nur an den Unterschieden einer einzelnen Datei interessiert, aber dies könnte leicht geändert werden, um zwei verschiedene Dateien zu bearbeiten ...):
%Vor% Sie nennen die Funktion so ...
diff_sections path/to/file 464 483 485 506
Wenn Sie den Anfang und das Ende der Abschnitte beschreiben können, die mit einer Regex zu vergleichen sind, können Sie Folgendes verwenden:
%Vor%Alternativ können Sie, wenn Sie die Abschnitt für Zeile Nummer beschreiben möchten, tun:
%Vor%4 10 2 8 ist die Anfangs- und Endzeilennummer für den zu berücksichtigenden Abschnitt aus der ersten Datei und der zweiten Datei.
Sie können die Snippets entweder als Shell-Skripte oder als Aliase speichern.
Tags und Links language-agnostic diff linux