Per eseguire vim in modalità non interattiva, è possibile utilizzare uno dei parametri +{command}
/ -c {command}
o -s
che consente di eseguire i comandi vim dopo aver letto il primo file.
Controlla alcuni esempi di seguito.
Tramite il comando è possibile ottenere semplici input e output standard tramite pipe:
$ echo Example | vim -es '+:wq! /dev/stdout' /dev/stdin | cat
Per modificare un file e salvare le modifiche in un altro:
$ vim -es '+:0,$s/127/128/g' '+:wq! new_file' /etc/hosts
$ cat file1 file2 | vim - -es '+:0,$s/foo/test/g' '+:wq! file3'
Per modificare il file sul posto, è possibile utilizzare in -s {scriptin}
modo da leggere il file di script, ad esempio:
$ echo ':0,$s/foo/test/ge' > cmds.txt
$ echo ':wq' >> cmds.txt
$ vim -s cmds.txt -es file
Per analizzare il file e inviarlo all'output della pipeline, è possibile provare quanto segue:
$ cat /etc/hosts | vim -es '+:0,$s/127/128/g' '+%print' '+:q!' /dev/stdin | cat
o:
$ cat /etc/hosts | vim -es '+:0,$s/127/128/g' '+:wq! /dev/stdout' /dev/stdin | cat
Vedi di più: Come modificare i file in modo non interattivo (ad es. In pipeline)? a Vim SE