
Wie kann man die Zeilen 2–4 in Datei A und die Zeilen 8–10 in Datei B unterscheiden?
Ist es außerdem möglich, die Zeilen in jeder Datei visuell auszuwählen, anstatt die Zeilennummern aufzuschreiben?
Danke!
Antwort1
Die gewünschte Lösung ist derzeit in Vim nicht verfügbar, obwohl einige Entwickler darüber diskutieren. Es gibt zwei Lösungen, die ich verwendet habe.
Eine Möglichkeit besteht darin, Zeile 1 in Datei A und die Zeilen 1-7 in Datei B zu löschen und die verbleibenden Zeilen zu vergleichen (z. B. mit :windo diffthis
).
Die andere Möglichkeit besteht darin, ein Plugin wieNrrwRgnum die Zeilen von Interesse in neue Puffer zu kopieren und dann diese Puffer zu vergleichen. Eine nette Funktion des NrrwRgn-Plugins ist, dass Sie Änderungen an diesen neuen Puffern vornehmen können und dass die Änderungen beim Beenden in die ursprünglichen Puffer zurückkopiert werden.
Für jede Vim-Operation, für die Sie einen Zeilenbereich angeben können, kann dieser Bereich auf verschiedene Weise angegeben werden. Eine Möglichkeit besteht darin, Zeilennummern zu verwenden. Eine andere Möglichkeit besteht darin, den Bereich zeilenweise visuell auszuwählen. Siehe
:help [range]
:help V
Um Ihr Beispiel zu lösen, verwenden Sie das Plugin NrrwRgn. Sie setzen den Cursor auf Zeile 2 von Datei A und geben ein
Vjj\nr
um die Zeilen 2-4 visuell auszuwählen ( Vjj
) und sie in einen neuen Puffer zu kopieren ( \nr
). Setzen Sie dann den Cursor auf Zeile 8 von Datei B und wiederholen Sie die gleiche Sequenz. Führen Sie in jedem der beiden neuen Puffer aus
:diffthis
Nicht elegant, aber es funktioniert.