To main content

vim: Zeichen in Anführungszeichen ersetzen.

Veröffentlicht von Benjamin Marwell am
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ßlich
  • c15w 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) &ltzeichen>
  • 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