Der effizienteste Weg, um den gesamten Puffer zu ersetzen?

10

Derzeit habe ich zwei ähnliche Methoden, um den gesamten Puffer durch einen anderen Text zu ersetzen (z. B. in der Zwischenablage).

Methode 1:

  1. Alle Zeilen löschen : :%d.

  2. Text einfügen: "+P(oder ähnlich :) :put+.

Methode 2:

  1. Wählen Sie alle Zeilen visuell aus : ggVG.

  2. Text einfügen : "+P.

Ich konnte jedoch keinen Ein-Befehl-Feuer-Weg finden, um das zu tun. Das naheliegendste, das ich gefunden habe, ist das :changeKommando. Aber es scheint nicht gut mit Registern zu funktionieren. Natürlich kann ich dafür eine Funktion erstellen und / oder einen Schlüssel zuordnen. Bevor ich jedoch all diese Anpassungen vornehmen kann, möchte ich Folgendes sicherstellen:

Gibt es einen eingebauten Befehl, um einen Zeilenbereich durch einen anderen Text zu ersetzen? Wie könnten Sie :%replace+den gesamten Puffer durch Text in der Zwischenablage ersetzen?

Naitree
quelle
2
Ich weiß nichts von meinem Kopf, aber wenn Sie dies häufig tun, warum nicht ein Mapping / einen Befehl erstellen?
Matt Boehm
5
Hmm, 1,$s/\_./\=@+ist keine Lösung: P :%d|put+ist näher, aber nicht ganz da.
Runium
1
Ich habe nach dem Punkt ein Sternchen vergessen ... 1,$s/\_.*/\=@+, das \_.mit jedem Zeichen einschließlich Zeilenumbruch übereinstimmt.
Runium
2
Haben Sie haben , um die Puffer wiederverwenden, oder wäre es akzeptabel, einen neuen Puffer zu beginnen?
200_erfolg
3
Ich denke, Sukminder :%d|put+passt. Es ist kurz und unvergesslich. Der andere Befehl ist einfach zu geheimnisvoll, um sich zu erinnern und richtig zu tippen.
Lie Ryan

Antworten:

2

Sie können ggvG<CTRL-G>den gesamten Puffer visuell auswählen und eingeben Select-mode. Dies ist der einfachste Weg, den Puffer durch Text zu ersetzen, den Sie eingeben möchten. Möglicherweise können Sie sogar ein Select-modeMapping erstellen, um :smapIhr Problem zu lösen.

Aaron Massey
quelle
0

Eine Möglichkeit, den gesamten Puffer durch Ihre Zwischenablage zu ersetzen, kann ein externer Befehl sein, zum Beispiel:

:%!pbpaste
:%!echo my_text

Siehe auch: Mac OS X-Zwischenablagefreigabe

Oder durch Substitution:

:%s/\_.*/\=@+/
:%s/\_.*/my text/

Alternativ verwenden :%d|put+(wie bereits in den Kommentaren vorgeschlagen).

Kenorb
quelle