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 :args
füllen Sie die Argumentliste mit dem Befehl aus. Sie können mehrere Dateinamen oder sogar Globs übergeben.
:args **/*.rb
Sucht 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 find
Befehl 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, :args
indem Sie sie selbst ausführen . Wenn Sie Dateien zur Liste hinzufügen oder daraus löschen möchten, können Sie :argadd
den :argdelete
Befehl oder verwenden.
Wenn Sie mit der Liste zufrieden sind, können Sie jetzt den leistungsstarken :argdo
Befehl 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
/c
Suchflag, wenn Vim vor dem Ersetzen eines Suchbegriffs eine Bestätigung anfordern soll.
- Verwenden Sie ein
/e
Suchflag, 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 :update
wird 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 :argdo
und :bufdo
gibt es :windo
und :tabdo
wirkt sich auf Fenster bzw. Registerkarten aus. Sie werden seltener verwendet, sind aber dennoch nützlich zu wissen.
/c
Flag zur Bestätigung von Substitutionen zu verwenden.