Para ejecutar vim modo no interactivo, puede utilizar cualquiera +{command}
/ -c {command}
o -s
parámetro que le permitirá ejecutar los comandos de vim después de que el primer archivo que se ha leído.
Verifique algunos ejemplos a continuación.
El comando puede lograr una entrada y salida estándar simple mediante tuberías:
$ echo Example | vim -es '+:wq! /dev/stdout' /dev/stdin | cat
Para editar un archivo y guardar los cambios en otro:
$ vim -es '+:0,$s/127/128/g' '+:wq! new_file' /etc/hosts
$ cat file1 file2 | vim - -es '+:0,$s/foo/test/g' '+:wq! file3'
Para editar el archivo en el lugar, puede usarlo -s {scriptin}
para leer el archivo de script, por ejemplo:
$ echo ':0,$s/foo/test/ge' > cmds.txt
$ echo ':wq' >> cmds.txt
$ vim -s cmds.txt -es file
Para analizar el archivo y enviarlo a la salida de la canalización, puede intentar lo siguiente:
$ 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
Ver más: ¿Cómo editar archivos de forma no interactiva (p. Ej. En canalización)? en Vim SE