Was ich lange nicht hinbekommen habe: Man hat in
vim einen Text in Anführungszeichen und möchte den Inhalt löschen. Aber wie trifft mal exakt alle Wort des Strings bzw. der wörtl. Rede, ohne erst nachzuzählen? Der Trick ist eigentlich ganz einfach. Man nehme einen Text, etwa diesen:
print("|Was mir schon immer Probleme bereitet hat, ist das \", ein %s Anführungszeichen" % "einfaches")
Ok, wollte man hier den String ersetzen, wäre folgendes möglich (der Curser ist durch
| dargestellt):
c13w
löscht bis einschließlich dem %, aber nicht das 's'c14w
löscht dann bis zum 's' einschließlichc15w
löscht den gewünschten Bereich
Blöde, da man sich schnell am
%s
vertut. Aber vim wäre nicht vim, wenn es nicht etwas dafür bereithalten würde. Der gesuchte Befehl heißt:
c2t"
Kurze Erklärung
c<bewegung>
startet einen ersetzen-Befehl- t<zeichen> steht gewissermaßen für until (bis zum) <zeichen>
- 2t steht damit für »bis zum 2ten Auftreten des folgenden Zeichens«
- »
"
« ist das gesuchte Zeichen
In Umgangssprache wäre das dann »Ersetze den Text bis zum zweiten Auftreten des Zeichens "«.
Ähnliche Operationen
Register nutzen
Möchte man den ausgeschnittenen Text wieder einfügen, drückt man einfach
p
(paste). Soll dieser zuvor in ein Register gespeichert werden, nutzt man etwa den Befehl
"xc2t"
, um den entfernten Text in Register
x
zu speichern und
"xp
, um diesen wieder einzufügen.
Umgebende Zeichen
Möchte man die umgebenden Zeichen - hier: die Anführungszeichen - ersetzen, so empfehle ich das Plugin "Surrounding".
Weblinks