Wenn ich ein Wort durch ein anderes Wort ersetzen muss, das ich zuvor gezerrt habe, verwende ich normalerweise einen Workflow, der mir unnatürlich erscheint:
Angenommen, ich habe diesen Text:
foo bar buzz
Und ich möchte ziehen foo
und durch bar
das ersetzen, was ich vorher gezogen habe.
Nach dem Ruckeln foo
sehe ich folgende Optionen:
Option 1
Stellen Sie den Cursor
bar
mit aufw
Setzen Sie
foo
vorbar
mitP
Stellen Sie den Cursor auf das
b
verbleibendebar
und löschen Sie das Wort mitde
Option 2
Setzen Sie den Cursor mit auf die Leiste
w
Verwendung
de
nach erasebar
Setzen Sie den Inhalt des Registers mit 0
"0P
(seit ich gelöscht habebar
,foo
ist mit einem einfachen nicht mehr erreichbarp
)
Beides scheint mir zu kompliziert und ich bin mir sicher, dass es einen effizienteren Weg gibt, um diese Aktion zu erreichen, aber ich kann nicht herausfinden, wie. Diese Idee wäre, die Lösch- und die Einfügeaktion in nur einer zu kombinieren, oder zumindest zu vermeiden, das gelöschte Wort im Ruckregister zu behalten, damit ich das gewünschte Wort mit einem einfachen Satz einfügen kann p
.
Auch ich kenne den Ersetzungsmodus, der mit ausgelöst wurde, R
aber es erlaubt nicht, das zu setzen, was gerissen wurde.
TL; DR : Wie ersetze ich ein Wort durch den Inhalt des Ameisenregisters?
quelle
Ich habe einen anderen Weg gefunden, es ist ein bisschen ähnlich wie Option 2, aber es hat den Vorteil, den Zustand der Register nicht zu verfälschen.
Die Idee ist, das " Schwarze-Loch-Register " zu verwenden: Dieses Register ist über zugänglich
"_
und hat die Besonderheit, dass Sie darin schreiben, aber nicht daraus lesen können. Wie ein Schwarzes Loch lässt dieses Register alles, was darin steckt, vollständig verschwinden. Hier können wir es verwenden, damitfoo
es auch nach dembar
Löschen im Yank-Register bleibt .Mit dieser Lösung wäre der Workflow nach dem Ruckeln
foo
:bar
mitW
(oder natürlich jedem benötigten Wort)bar
mit"_de
foo
aus dem Ruckregister mitP
. Das Yank-Register enthält nochfoo
dabar
ging in das Schwarze Loch.Ich bin mir nicht sicher, ob dies eine bessere Lösung ist als die von @ Carpersmoker ( in Bezug auf Vimgolf @ Carpetsmoker gewinnt ), aber ich wusste nichts über das Black-Hole-Register und dachte, einige könnten daran interessiert sein, es zu wissen.
quelle
Gehe zum Start von "foo". Drücken Sie
yiw
. Das reißt das innere Wort.Gehe zur "Bar" und drücke auf den Buchstaben
w
. Dann wähle es aus und ziehe zurück:viw"0p
Ich benutze
ciw
undyiw
viel.quelle
iw
Textobjekten wie ist interessant, aber Ihre Lösung ist tatsächlich dieselbe wie die von @ CarpetSmoker: Visuelles Auswählen des zweiten Wortes und Einfügen des ersten. Ich denke auch, dass Ihre Lösung mit einem einfachenp
statt mit einem"0
Register funktionieren würde .Wenn sich der Cursor irgendwo auf dem Wort befindet,
yiw
- Ziehen Sie das Wort und speichern Sie es im0
Register.Gehen Sie zu dem Zielwort, das ersetzt werden soll
ciw
löscht das Wort und versetzt Sie in den Einfügemodus.ctrl-r
. Es"
erscheint ein Fenster mit der Aufforderung, das Register aufzurufen.0
wird das zerrissene Wort einfügen.Gespeicherte Wörter werden (normalerweise!) Im
0
Register gespeichert . Siehe:registers
, um die gespeicherten Puffer anzuzeigen. Dies scheint eine langwierige Prozedur zu sein, meiner Meinung nach öffnet dies die Tür zu den viel raffinierteren Registertricks.quelle