Für Vim gibt es ein sehr praktisches Plugin namens Surround, welches es einem ermöglicht Wörter, Sätze, Absätze, Zeilen,… mit Klammern, Anführungszeichen oder XML-Tags zu umschließen. Solche Umschließungen können auch geändert oder gelöscht werden.
Zur Installation wird das Archiv surround.zip im Verzeichnis ~/.vim entpackt.
Grundsätzlich lehnt sich die Bedienung an das Konzept an, den Text zwischen Klammern, Anführungszeichen,… zu ändern so wie es im Artikel Vim Bewegungskommandos im Abschnitt “Spezielle Bewegungskommandos” beschrieben ist.
Text Umschließen
Die Syntax zum Umschließen von Text ist:
ys<BEWEGUNG><ZEICHEN>
Beispiele:
ysis"– der aktuelle Satz wird mit doppelten Anführungszeichen umschlossen.ysiw<b>– versieht das aktuelle Wort mit mit dem HTML-Tagb, so dass es fett angezeigt wird.yss)– umschließt die aktuelle Zeile mit runden Klammern.ysi)"– umschließt den Text zwischen den Klammern mit doppelten Anführungszeichen.ysa")– umschließt den den Text zwischen den doppelten Anführungszeichen und die Anführungszeichen selbst mit runden Klammern.
Statt den Bewegungskommandos kann man auch im visuellen Modus den gewünschten Text markieren. Dann drückt man s gefolgt vom gewünschten Zeichen.
Beispiel: s" um den markierten Text mit doppelten Anführungszeichen zu umschließen.
Damit man es sich besser vorstellen kann hier ein konkretes Beispiel. Die folgende Zeile:
Dies ist eine Beispielzeile
wird durch yss" zu
"Dies ist eine Beispielzeile"
Liegt der Cursor auf dem Wort “eine”, so kann man mit ysiw) das Wort mit Klammern umschließen:
"Dies ist (eine) Beispielzeile"
Umschließung ändern
Um die Umschließung von Text zu ändern nutzt man folgende Syntax:
cs<AKTUELLES_ZEICHEN><NEUES_ZEICHEN>
Beispiele:
cst"– ändert das XML/HTML-Tag zu doppelten Anführungszeichen.cs"'– ändert doppelte in einfache Anführungszeichen.cs)}– ändert runde in geschweifte Klammern.
Umschließung löschen
Die Syntax um eine Umschließung zu löschen ist:
ds<ZEICHEN>
Beispiele:
ds]– löscht eckige Klammern.ds'– löscht einfache Anführungszeichen.dst– löscht XML/HTML-Tags.
Wiederholen
Leider funktioniert das Wiederholen des letzten Kommandos mit Punkt nicht mit dem Surround-Plugin. Jedoch kann man es mit dem Plugin repeat zum funktionieren bringen.
Dafür kopiert man die Datei repeat.vim in das Verzeichnis ~/.vim/autoload/. Nachdem man . (Punkt) gedrückt hat muss man jedoch das Zeichen, welches eingefügt werden soll wiederholen.
Abhilfe schafft ansonsten auch die Nutzung von Makros. Dabei können häufig genutzte Surroundings auch als Makro in die ~/.vimrc gespeichert werden.
Folgende Zeile definiert das Register k so, dass beim Aufruf des Makros k mittels @k das aktuelle Wort in runde Klammern eingeschlossen wird:
let @k="ysiw)"
Folgende Beiträge könnten Dich auch interessieren:
Schlagworte: HTML, Klammern, Sourround, Vim, XML








Danke fuer den Tip!
Ich werde das jetzt mal ausprobieren. Mal schauen ob es in meinen vim plugin Ordner einen festen Platz findet. Die Steuerung liest sich eigentlich sehr vim logisch.
Erstmal Danke für die tolle Arbeit!
Was vielleicht noch interessant ist, wenn mann ein Wort im visuellen Modus markiert hat kann man wie beschrieben mit s” das Wort von Anführungszeichen umschließen lassen. Das geht auch mit Tags statt z.B. s” st gefolgt vom Tagnamen.
Hallo vbd,
das mit den Anführungszeichen war ja nur ein Beispiel. Man kann natürlich auch Tags und Klammern auf diese Weise setzen. Also im visuellen Modus wenn der gewünschte Text markiert ist: s<tagname> oder s}
Ob man t oder < schreibt ist halt Geschmackssache.
Aber dass die geschlossene Spitze Klammer nicht nötig ist wusste ich auch noch nicht.
Viele Grüße,
zimon