In Bezug auf Bereinigungsaufgaben wie (ohne darauf beschränkt zu sein) die in diesen Fragen beschriebenen:
Gibt es eine Möglichkeit, diese Befehle nur auf die Zeilen der Dateien anzuwenden, die tatsächlich geändert wurden? Dies dient dazu, die Diff-Ausgabe nach dem Bearbeiten des Quellcodes auf die tatsächliche Änderung zu konzentrieren (ein potenzieller Code-Reviewer würde durch die Änderungen beim Bereinigen der gesamten Datei nicht verwirrt), ohne neue Formatierungsprobleme einzuführen.
:changes
funktioniert nicht ohne viel Hackery; Wie es scheint, sind diese Informationen in der Viminfo-Datei gespeichert, und es gibt keine Möglichkeit zu sehen, welche Änderungen Sie in dieser Sitzung vorgenommen haben und welche in der vorherigen ... Es sei denn, Sie deaktivieren die Viminfo-Datei natürlich, aber das ist ziemlich umständlich ... möchte hier allerdings dasAntworten:
Sie können den Befehl verwenden
folddoopen
, um einen Befehl nur in Zeilen auszuführen, die sich nicht innerhalb einer geschlossenen Falte befinden.Mit dem folgenden Befehl können Sie beispielsweise Leerzeichen am Zeilenende entfernen:
Um dies nur auf die Linien anzuwenden, die sich derzeit nicht in einer geschlossenen Falte befinden, fügen Sie Folgendes hinzu
folddopen
:folddoopen
kann auch mit abgekürzt werdenfoldd
.Wenn Sie Vim als Diff-Tool Ihrer Quellcodeverwaltung verwenden, können Sie damit Änderungen nur auf geänderte Linien anwenden, während Sie das Diff anzeigen.
Beachten Sie, dass der Diff-Modus von Vim standardmäßig einige Zeilen vor und nach jedem geänderten Abschnitt anzeigt. Um also nicht Linien zu beeinflussen , die unmittelbar vor oder nach geändertenen Zeilen Sie zum ersten Satz benötigen,
context
indiffopt
an0
zB:Bei manuellen Änderungen ist möglicherweise auch die
foldopen
Option hilfreich. Es definiert, welche Arten von Befehlen das Öffnen von Falten verursachen. Beachten Sie jedoch, dass dies nicht verhindert, dass die Bearbeitung innerhalb der Falten wie beimfolddoopen
Befehl erfolgt.(Wenn Sie mit "den Zeilen der Dateien, die tatsächlich geändert wurden" etwas anderes meinen, müssen Sie einen Weg finden, die unveränderten Zeilen wegzufalten, bevor Sie den Befehl ausführen: Der einfachste Weg ist, eine unveränderte Kopie beizubehalten der Datei und verwenden Sie vimdiff manuell.)
quelle
:folddoopen
, scheint ein sehr nützlicher Befehl zu sein. Ich wollte auch anbieten, dass Sie mit fugitive.vim den Unterschied Ihres aktuellen Puffers mit dem:Gdiff
Befehl leichter erkennen können .:vsp new
, dann:read !git show HEAD~1:path
und schließlich:windo diffthis
(und dann Ihre Lösung verwendet).