Ich habe eine Liste von Dateien, die ich mit diesem Befehl in VIM geöffnet habe:
%Vor%Ich möchte diesen Befehl für alle geöffneten Dateien ausführen:
%Vor%(aus den Zeilen 99 bis 104, fügen Sie einen Kommentar "#") ein & lt; - simple, works
Wenn ich den obigen Befehl zum Einfügen ausführen, funktioniert er wie erwartet in der aktuellen Datei. Wie bekomme ich VIM, um den gleichen Befehl für alle geöffneten Dateien auszuführen? Ich probierte :argdo
, :windo
, :bufdo
, hatte aber kein Glück.
Irgendwelche Vorschläge?
Ich denke, bufdo
würde funktionieren, wenn Sie set hidden
(damit bufdo
die Puffer ohne Speichern ändern kann) vor:
Speichern Sie dann alle Dateien mit :bufdo! w
oder :wa
.
(Hinweis: set hidden
könnte auch durch set autowrite
ersetzt werden. )
Ich denke, sed wäre eine bessere Option, wenn Sie es verwenden können. sed ist ein Befehlszeileneditor und kein interaktiver Editor wie vim.
%Vor% Da Sie alle Dateien als Argumente angegeben haben, ist :argdo
der richtige Befehl. (Wenn Sie keine anderen Dateien öffnen, funktioniert auch :bufdo
.) Wenn Sie :set hidden
nicht möchten (wie in der anderen Antwort angegeben), müssen Sie den Puffer sofort über :update
beibehalten. Da Sie einen :normal
-Befehl verwenden, müssen Sie ihn in :execute
einschließen, um einen anderen Ex-Befehl verketten zu können: