Hierfür gibt es verschiedene Möglichkeiten.
Im aktuellen Verzeichnis
Wenn Sie das Suchen / Ersetzen in einem Projektbaum ausführen möchten, können Sie die Argumentliste von Vim verwenden .
Öffnen Sie einfach Vim und :argsfüllen Sie die Argumentliste mit dem Befehl aus. Sie können mehrere Dateinamen oder sogar Globs übergeben.
:args **/*.rbSucht beispielsweise rekursiv im aktuellen Verzeichnis nach Ruby-Dateien. Beachten Sie, dass dies auch wie das Öffnen von Vim mit ist vim **/*.rb. Sie können sogar den findBefehl der Shell verwenden , um eine Liste aller Dateien im aktuellen Verzeichnis abzurufen, indem Sie Folgendes ausführen:
:args `find . -type f`
Sie können die aktuelle Argumentliste anzeigen, :argsindem Sie sie selbst ausführen . Wenn Sie Dateien zur Liste hinzufügen oder daraus löschen möchten, können Sie :argaddden :argdeleteBefehl oder verwenden.
Wenn Sie mit der Liste zufrieden sind, können Sie jetzt den leistungsstarken :argdoBefehl von Vim verwenden, der für jede Datei in der Argumentliste einen Befehl ausführt::argdo %s/search/replace/g
Hier sind einige Tipps für die Suche (basierend auf einigen Kommentaren):
- Verwenden Sie eine Wortgrenze, wenn Sie nach "foo", aber nicht nach "foo_bar" suchen möchten. Verwenden Sie die
\<und \>-Konstrukte um das Suchmuster wie folgt::argdo %s/\<search\>/foobar/g
- Verwenden Sie ein
/cSuchflag, wenn Vim vor dem Ersetzen eines Suchbegriffs eine Bestätigung anfordern soll.
- Verwenden Sie ein
/eSuchflag, wenn Sie die Fehler "Muster nicht gefunden" überspringen möchten.
- Sie können auch die Datei speichern nach der Durchführung der Suche wählen:
:argdo %s/search/replace/g | update. Hier :updatewird verwendet, weil die Datei nur gespeichert wird, wenn sie geändert wurde.
Puffer öffnen
Wenn Sie bereits Puffer geöffnet haben, für die Sie suchen / ersetzen möchten, können Sie verwenden :bufdo, dass für jede Datei in Ihrer Pufferliste ein Befehl ausgeführt wird ( :ls).
Der Befehl ist sehr ähnlich zu :argdo: :bufdo %s/search/replace/g
Ähnlich wie :argdound :bufdogibt es :windound :tabdowirkt sich auf Fenster bzw. Registerkarten aus. Sie werden seltener verwendet, sind aber dennoch nützlich zu wissen.
/cFlag zur Bestätigung von Substitutionen zu verwenden.