Angenommen, ich habe eine Funktion namens StripWhitespace
.
Ich kann es auf einer einzelnen Datei ausführen, indem ich die Datei öffne und ausführe :StripWhitespace
.
Wie kann ich diese Funktion automatisch für einen Ordner mit Dateien ausführen und die Ergebnisse im weiteren Verlauf speichern?
macro
multiple-files
Quadratfrosch
quelle
quelle
Antworten:
Mit dem
-c
Argument können Sie beim Start einen Befehl ausführenvim(1)
:Beispiel:
Um danach zu beenden, fügen Sie hinzu
| :wqa
:quelle
Wenn Sie sich bereits in Vim befinden, können Sie mit den Befehlen
:argdo
oder:bufdo
einen Befehl für jedes Element in der Argumentliste bzw. Pufferliste ausführen.zB um einen
:
Befehl für jede Datei in der Argumentliste auszuführen :Oder um eine Funktion aus jeder Datei in der Pufferliste aufzurufen:
Oder um ein Makro
q
für jede Datei in der Argumentliste auszuführen :Sie können dann alle geänderten Puffer mit
:wall
speichern oder alle speichern und Vim mit beenden:wqall
.Wenn Sie die Dateien im Laufe der Zeit schreiben möchten, können Sie in einem Aufruf Folgendes hinzufügen
:update
:Es gibt verschiedene Möglichkeiten, wie Sie die Dateien in Vim einbinden können, darunter:
vim *
(Dadurch werden alle Dateien zur Argumentliste hinzugefügt.):args
Befehl (der Platzhalter und Backtick-Ausdrücke unterstützt), um die Argumentliste zu füllen, oder den:argadd
Befehl, um Dateien hinzuzufügen.:e
,:Ex
oder eine Datei-Öffnen - Plugin.quelle
'hidden'
eingestellt werden. (2) Der: update
Befehl ist eine leichte Verbesserung gegenüber dem Befehl,:w
da er nur schreibt, wenn eine Änderung vorgenommen wurde,:bufdo update
oder:argdo update
alle geänderten Puffer oder Argumente schreibt.update
. Ich überlegte zu erwähnen,hidden
wann ich die Antwort schrieb, entschied mich aber dagegen, weil ich sie nicht überkomplizieren wollte. Nachdenklich sollte es dort drin sein. Ich werde die Antwort so aktualisieren, dass sie beide Vorschläge enthält.:wall
, was auch den Vorteil hat, nicht durch Puffer zu radeln und Sie von Ihrem Ausgangspunkt wegzubringen. Ich nehme an, es:argdo update
ist immer noch eine andere Geschichte - vielleicht möchten Sie nicht in Puffer schreiben, die nicht in Ihrer Argumentationsliste enthalten sind.