vim Geschichte ausschneiden und einfügen


58

Wenn ich in vim 'schneide', glaube ich, dass es Register gibt, die eine Geschichte aller neuen Dinge halten, die ich geschnitten habe. Wie greife ich auf diese Register zu?

Nehmen wir zum Beispiel an, ich schneide jedes dieser Wörter nacheinander

  • 'Hallo'
  • 'Welt'
  • 'Und'
  • "Vim"

Beachten Sie, dass ich diese Änderungen nicht in bestimmten Registern speichere, sondern nur viermal hintereinander 'd' verwende.

Antworten:


97

Das

: Hilfe registriert 

Befehl zeigt, dass es 10 nummerierte Register gibt ( "0 zu "9 ).

Registrieren "0 ist das Neueste riss ; registrieren "1 hat die neueste gelöscht Text, registrieren "2 die vorherige Löschung, "3 hat die Löschung davor und so weiter.

Wenn Sie die einzelnen Zeilen nacheinander löschen, werden sie registriert "1, "2, "3 und "4 wird "Vim", "And", "World" & amp; "Hallo".

Sie können dies überprüfen, indem Sie die :reg (oder :registers ) Befehl:

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

Nachdem Sie also die vier Zeilen nacheinander gelöscht haben, können Sie die zweite Zeile ("Welt") mit wiederherstellen

"3p

weil es die drittletzte Löschung ist.


Dies ist perfekt; Was möchte ich jedoch mit dem neuesten Text?
Alexey

Sie würden also verwenden: p (was dasselbe bedeutet wie "0p")
njd

1
Achten Sie beim Lesen auch auf die Sonderregister, insbesondere "*" und "+" :help registers. Sehr sinnvoll.
Daniel Andersson

3
Götter, als Vimmer lernt man jeden Tag etwas Neues. Es ist toll. Danke, @njd.
ELLIOTTCABLE

2
Diese Antwort lässt ein wichtiges Detail außer Acht: Auf diese Weise werden nur Löschungen einer oder mehrerer Zeilen im Verlauf gespeichert. Wenn Sie die Wörter in der Weise löschen, wie sie in der Frage beschrieben wurden (mit d viermal statt dd ) dann sind alle bis auf den zuletzt gelöschten verloren.
Alexander Rechsteiner

7

Zusätzlich zu der Antwort von njd kann dies mit der vereinfacht werden YankRing Plugin. Sie können die vorherigen Yanks nicht nur einfacher durchsuchen, sondern auch einige Tasten so konfigurieren, dass Sie die vorherigen Yanks aus dem Stapel entfernen können. Dies ermöglicht Ihnen Folgendes:

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring

4
Könnten Sie hinzufügen, wie man zuordnet ,p den vorherigen Ruck knallen?
Andrew Wood
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.