ADMIN-Tipp: Suchen und Ersetzen in Vim

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Wer sich ohne Cursor-Tasten durch den Vim-Editor bewegt, kann sich an die nächste Herausforderung wagen: Suchen und Ersetzen, auf Wunsch auch mit Regular Expressions oder interaktiv. 

Im Prinzip ist die Suchen-und-Ersetzen-Funktion von Vim schnell erklärt: Im Kommandomodus dient dazu der Befehl "substitute" oder kurz "s". Im einfachsten Fall ist dies ":s/Suchstring/Ersetzstring/". Hier sucht und ersetzt der Editor aber nur innerhalb der aktuellen Zeile. Häufiger ist wohl der Anwendungsfall, dies im ganzen File zu tun. Dabei hilft es, dass die vollständige Syntax des Kommandos so aussieht:

:Bereichs/Suchstring/Ersetzstring/Optionen

Im ersten Beispiel wurde der optionale Bereich einfach weggelassen. Um im ganzen File zu suchen, bietet Vim die Abkürzung "%". Der komplettte Befehl ist dann also ":%s/alt/neu/".

Da dies oft des Guten zuviel ist, kann man den Befehl auch in einem interaktiven Modus aufrufen, in dem er bei jeder Ersetzung nachfragt. Dazu dient die Option "c", die am Ende des Ausdrucks folgt:

:%s/alt/neu/c

Alternativ ist es bei vielen Anwendungen sinnvoll, nur in einem Abschnitt des Texts zu suchen. Das kann man zum Beispiel machen, indem man zu Beginn des Kommandos den Bereich mit Zeilennummern eingrenzt, etwa mit ":10,20s/alt/neu/" auf die Zeilen 10 bis 20. Anwenderfreundlicher ist es allerdings, mit "V" in den zeilenweisen Visual-Mode zu wechseln und mit den Vim-Navigationskommandos einen Absatz zu markieren. Wenn man nun den Doppelpunkt eingibt, um den folgenden Befehl einzuleiten, stellt Vim automatisch die Begrenzungszeichen "'<" und "'>" voran, die für Beginn und Ende des markierten Bereichs stehen. Dies ist etwa praktisch, wenn man in der Apache-Konfiguration den Abschnitt für einen virtuellen Host kopiert und dann den Hostnamen im betreffenden Abschnitt ändert:

:'<,'>s/wwwalt/wwwneu/g

Die Option "g" sorgt hierbei dafür, dass der gesuchte String in einer Zeile gegebenenfalls auch mehrfach ersetzt wird. Die Optionen lassen sich auch kombinieren, indem man sie hintereinander schreibt. Groß- und Kleinschreibung ignoriert dabei das Kürzel "i" (ignore case).

20.03.2013

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023