Um vim im nicht interaktiven Modus auszuführen, können Sie entweder +{command}
/ -c {command}
oder einen -s
Parameter verwenden, mit dem Sie die vim-Befehle ausführen können, nachdem die erste Datei gelesen wurde.
Überprüfen Sie einige Beispiele unten.
Eine einfache Standardeingabe und -ausgabe über Pipes kann mit dem folgenden Befehl erreicht werden:
$ echo Example | vim -es '+:wq! /dev/stdout' /dev/stdin | cat
So bearbeiten Sie eine Datei und speichern die Änderungen in einer anderen:
$ vim -es '+:0,$s/127/128/g' '+:wq! new_file' /etc/hosts
$ cat file1 file2 | vim - -es '+:0,$s/foo/test/g' '+:wq! file3'
Um die Datei direkt zu bearbeiten, können Sie Folgendes verwenden, -s {scriptin}
damit die Skriptdatei gelesen wird. Beispiel:
$ echo ':0,$s/foo/test/ge' > cmds.txt
$ echo ':wq' >> cmds.txt
$ vim -s cmds.txt -es file
Um die Datei zu analysieren und an die Ausgabe der Pipeline zu senden, können Sie Folgendes versuchen:
$ cat /etc/hosts | vim -es '+:0,$s/127/128/g' '+%print' '+:q!' /dev/stdin | cat
oder:
$ cat /etc/hosts | vim -es '+:0,$s/127/128/g' '+:wq! /dev/stdout' /dev/stdin | cat
Weitere Informationen: Wie bearbeite ich Dateien nicht interaktiv (z. B. in der Pipeline)? bei Vim SE