Sie könnten vimgrep ausführen und dann ein Makro aufzeichnen, das jede Zeile in der vimgrep-Ausgabe ansteuert und die Ersetzung vornimmt, etwa so: (geben Sie die #-Kommentare nicht ein!)
:set autowrite #automatically save the file when we change buffers
:vimgrep /pattern/ ./**/files
qa #start recording macro in register a
:s/pattern/replace/g #replace on the current line
:cnext #go to next matching line
q #stop recording
10000@a #repeat the macro 10000 times, or until stopped by
#an "error" such as reaching the end of the list
:set noautowrite
Ich habe es nicht getestet, daher kann es ein wenig Optimierungsbedarf geben - testen Sie es zuerst mit einigen Dateien, die Sie nicht stören, wenn sie durcheinander geraten.
Der Vorteil gegenüber sed ist, dass Vim-Regex mächtiger sind und Sie die Option c zu :s hinzufügen können, um jede Ersetzung zu verifizieren.
Modifier : Ich habe meinen ursprünglichen Beitrag geändert, da er falsch war. Ich habe :1vimgrep verwendet, um die erste Übereinstimmung in jeder Datei zu finden, aber ich habe die Dokumentation falsch gelesen - es findet nur eine Übereinstimmung in allen Dateien.