vimdiff hat die ärgerliche Angewohnheit, zwei fast vollständig unterschiedliche Zeilen als dieselbe teilweise unterschiedliche Zeile anzuzeigen, nur weil sie am Anfang oder am Ende ein gemeinsames Zeichen haben.
Zum Beispiel:
foo.txt
enthält : The quick brown fox jumps over the lazy dog
.
bar.txt
enthält : This is a completely different line
.
vimdiff foo.txt bar.txt
Zeigt diese beiden Zeilen nebeneinander an, wobei alles außer dem Th
am Anfang hervorgehobenen angezeigt wird .
Gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren und nur verschiedene Zeilen als unterschiedliche Zeilen anzuzeigen?
:diffupdate
, damitvimdiff
die Speicherorte der beiden Dateien mit den hinzugefügten "Anker" -Matches "synchronisiert" werden.Antworten:
Ja, es ist möglich. Geben Sie den Befehl ein
quelle
:hi! link DiffChange DiffText
. Aber ist diese Lösung nicht nur ein Papier über das Problem?:hi link
diese Drucke ausprobiert habeE414
, nicht:hi! link
. Hier geht es darum, Änderungen zwischen zwei Dateien hervorzuheben. Die Tatsache, dass für vim der Abschnitt, der mit der gewünschten Farbe hervorgehoben werden soll, eine Linie und nicht der Teil einer Linie ist, ist für den Benutzer nicht relevant.just display different lines as being different lines?
. Ich habe die von Ihnen beantwortete Fragenversion jedoch nicht überprüft. Ich würde persönlich das Gegenteil mögen, mit etwas wie diffc: highligh fügte unterdrückte Zeichen hinzu . Und dafür muss ich auch vim patchen.Nein, dies ist Teil des internen Algorithmus von Vim, um die vom externen Diff-Tool gemeldeten Linienänderungen weiter zu unterteilen.
Es wäre schön, wenn dies durch eine Option beeinflusst werden könnte, aber es gibt keine aktuelle. Sie müssten den Quellcode von Vim ändern und Ihre eigene spezielle Version kompilieren. Wie wäre es, einen Patch zu schreiben und ihn an die Mailingliste vim_dev zu senden ?!
quelle
Ich denke, es hängt von der Ausgabe des Befehls "diff" ab.
Wenn Sie ": help diff-options" ausführen, sehen Sie ein Beispiel für das Diff-Format, das Vim erwartet:
Ich denke, vimdiff wird die Ersetzungen (z. B. 7c7) nebeneinander platzieren und sie hl-DiffChange färben (z. B. lila in meiner Standardeinstellung) und dann den anderen Text in der Zeile mit hl-DiffText hervorheben (z rot in meiner Standardeinstellung).
Zum Beispiel, wenn ich diese beiden Dateien vimdiff:
Datei 1:
Datei 2:
Obwohl die dritte Zeile von zwei Dateien völlig unterschiedlich ist, stellt vimdiff sie immer noch nebeneinander.
Eine hackige Lösung verwendet möglicherweise ein externes Diff-Programm zum Ändern, das das gewünschte Format erzeugt.
quelle