![Ersetzen Sie eine Zeile durch die Zeile, die ich im Puffer in vi habe](https://rvso.com/image/23934/Ersetzen%20Sie%20eine%20Zeile%20durch%20die%20Zeile%2C%20die%20ich%20im%20Puffer%20in%20vi%20habe.png)
Ich cc
kopiere dd
eine Zeile in meinen Einfügepuffer. Dann gehe ich zu einem neuen Speicherort.
Ich möchte eine angezeigte Zeile ersetzen. Also gebe ich ein p
Down dd
.
Gibt es einen einfacheren Weg (weniger Tastenanschläge)?
Antwort1
Sie können V
die Zeile durch Eingabe auswählen und dann p
ersetzen.
Antwort2
Eine andere Möglichkeit hierfür wäre"_ddp
"_dd
löscht die aktuelle Zeile in den Nullpuffer. Dadurch wird nicht überschrieben, was Sie gerade kopiert haben, was ich oft hilfreich fand! Es p
wird die Zeile eingefügt, die Sie zuvor kopiert haben.
Es ist vielleicht nicht kürzer, was die Anzahl der Tastenanschläge angeht, aber zu wissen, dass dies eine Option ist, kann sehr hilfreich sein!
Antwort3
Angus und Thor haben die kurzen Antworten abgedeckt, hier also einige zusätzliche Erkundungen.
Wenn Sie aus irgendeinem Grund vor dem Einfügen löschen möchten, können Sie die nummerierten Register nutzen. Das "0
Register enthält den Text, der vom letzten y
oder entfernt Y
, aber nicht gelöscht wurde. Die "1
Durchgangsregister "9
speichern die letzten 9 Lösch-/Ausschneidevorgänge, die Sie durchgeführt haben. Also:
- Wenn Sie mit gezogen haben
yy
, können Sie durch ersetzendd"0P
. - Wenn Sie mit
dd
oder schneidencc
, können Sie durch ersetzendd"2P
. (Nichtdd"1P
, weil dasdd
füllt"1
.)
Versuchen Sie :help "0
es mit ausführlicheren Informationen.
Antwort4
Angenommen, Sie möchten Zeile 1 durch 3 ersetzen, dann könnten Sie:1m3|2d
Dadurch wird Zeile 1 effektiv in Zeile 3 verschoben und Zeile 2 (also die alte Zeile 3) entfernt.