Ersetzen Sie eine Zeile durch die Zeile, die ich im Puffer in vi habe

Ersetzen Sie eine Zeile durch die Zeile, die ich im Puffer in vi habe

Ich cckopiere ddeine 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 Vdie Zeile durch Eingabe auswählen und dann persetzen.

Antwort2

Eine andere Möglichkeit hierfür wäre"_ddp

"_ddlöscht die aktuelle Zeile in den Nullpuffer. Dadurch wird nicht überschrieben, was Sie gerade kopiert haben, was ich oft hilfreich fand! Es pwird 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 "0Register enthält den Text, der vom letzten yoder entfernt Y, aber nicht gelöscht wurde. Die "1Durchgangsregister "9speichern die letzten 9 Lösch-/Ausschneidevorgänge, die Sie durchgeführt haben. Also:

  • Wenn Sie mit gezogen haben yy, können Sie durch ersetzen dd"0P.
  • Wenn Sie mit ddoder schneiden cc, können Sie durch ersetzen dd"2P. (Nicht dd"1P, weil das ddfüllt "1.)

Versuchen Sie :help "0es 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.

verwandte Informationen