Bei der Verwendung von u
oder CTL-R
zum Rückgängigmachen oder erneuten Ausführen einer Bearbeitung in vim werden anscheinend Textblöcke geändert, nicht nur der letzte Tastenanschlag.
Wodurch wird die Größe des Blocks bestimmt, der als einzelne Bearbeitung betrachtet wird?
quelle
CTRL-G u
im Einfügemodus aufteilen. Dies ist hilfreich, wenn Sie über einige Makros im Einfügemodus verfügen.Vim modale Bearbeitung wird häufig als betrachteter Operator (zB
c
,d
...) , um eine Anwendung über Bewegung (zBiw
,w
,}
, ...). Als wunderbares Nebenprodukt wird Vim klobig rückgängig gemacht. Während andere Editoren raten müssen, um viele kleine Undos in Undo-Blöcke zu verwandeln, macht Vim dies auf natürliche Weise. Ein weiterer Nebeneffekt ist, dass Sie einen Wiederholungsoperator.
(auch als Punktbefehl bezeichnet) erhalten.In Ihrer Frage werden Tastenanschläge speziell erwähnt. Ich gehe also davon aus, dass Sie wissen möchten, wie Sie kleine Änderungen im Einfügemodus rückgängig machen können. Die Antwort ist, dass dies nicht "der Weg der Vim" ist. "The Vim Way" bedeutet, dass Sie sich jeweils für einen kurzen Burst im Insert-Modus befinden. Dies bedeutet, dass Sie bei Fehlern im Einfügemodus häufig einfach in den normalen Modus wechseln und den Text korrigieren oder einfach einen Vorgang rückgängig machen
u
und den Text neu schreiben.Manchmal muss ein Rückgängig-Block im Einfügemodus geteilt werden. Dies kann
<c-g>u
im Einfügemodus über erfolgen. Siehe:h :undoj
und:h undo-blocks
für weitere Informationen.Für weitere Hilfe schlage ich Folgendes vor:
Es gibt auch einige Screencasts zu diesem Thema:
quelle
Sie können sich das auch so vorstellen: Jedes Mal, wenn Sie in den Einfügemodus wechseln, um Text zu bearbeiten, und Sie drücken Esc, wird ein Block gebildet. Wenn Sie versuchen, diesen Block rückgängig zu machen, gehen Sie zu derselben Position, bevor Sie in den Einfügemodus gewechselt sind.
Daher können Sie Ihre Änderungen "speichern", indem Sie den Einfügemodus von Zeit zu Zeit verlassen: Nehmen wir an, Sie gehen in den Einfügemodus und schreiben eine Funktion. Sie können mit dem Codieren fortfahren und zur nächsten Funktion wechseln. Manchmal ist es jedoch vorzuziehen, zum normalen Modus zurückzukehren und erneut in den Einfügemodus zu wechseln. Auf diese Weise können Sie Ihren Code auf einfache Weise strukturieren lassen, und wenn Sie zurückgehen müssen, können Sie wissen, an welcher Position Sie landen werden.
Hinweis: Wenn Sie Pfeile zum Bewegen verwenden, ist dies so, als hätten Sie Esc+ [ hjkl] gedrückt.
quelle