Angenommen, ich habe den Text Fnord
zuvor gezogen und mein Cursor befindet sich auf B
der Zeile:
M:mock(Baz)
Wie kann ich den Text in () mit dem zuvor gezogenen Text ändern?
Derzeit mache ich oft den Fehler, indem ich Folgendes mache:
di(
aka "delete inside ()"- UMSCHALT + P.
Das lässt mich aber wieder mit dem genauen Text zurück, da der gelöschte Text in das Register verschoben wird.
Ich möchte haben:
M:mock(Fnord)
cut-copy-paste
normal-mode
register
k0pernikus
quelle
quelle
0
Register enthält den zuletzt gezogenen Text.:h quote0
vi)p
. Es ist das gleiche wie in dieser Antwort, nur mit demi)
Textobjekt anstelle desw
Textobjekts,Antworten:
Sie können die visuelle Auswahl verwenden, um den zu ersetzenden Text auszuwählen und ihn dann wie folgt einzufügen:
vi(p
vi(
wählt Baz aus (weil es in Klammern steht) undp
fügt Fnord darüber ein.Dies wird Baz jedoch nach dem Einfügen in das Register ziehen, was möglicherweise nicht das ist, was Sie wollen.
quelle
Sofern Sie kein Register angeben, verwendet
p
(oderP
) das zuletzt gefüllte Register. Das unbenannte Register""
enthält den zuletzt gerissenen oder gelöschten Text (sofern nicht ein anderes Register angegeben wurde, z. B. mit"ay
), aber diese gelten auch"0
für Amis oder"1
für Löschungen / Änderungen. Siehe Register .Wenn der letzte Text mitgerissen wurde
y
, können Sie ihn aus dem0
Register mit einfügen"0P
. Wenn es gelöscht wurde, können Sie mit dem2
Register mit"2P
("1
ist jetztBaz
) darauf zugreifen .Alternativ können Sie vermeiden, mit Ihren Registern herumzuspielen, und das Blackhole-Register
"_
löschen :quelle
Wenn die Installation von Plugins eine Option ist, können Sie yankstack.vim verwenden . Dann können Sie Ihren aktuellen Workflow beibehalten:
quelle
Angenommen, "Fnord" befindet sich in Register a, das Sie ausführen können (mit dem Cursor am Zeilenanfang).
f(ci(<c-r>a
quelle