salir - Ejecute un comando dentro de Vim desde la línea de comando
insertar texto vim (3)
Esto funciona:
gvim -c "set et|retab|wq" foo.txt
set et (= set expandtab ) garantiza que los caracteres de las tab reemplazados con la cantidad correcta de espacios (de lo contrario, la retab no funcionará).
Normalmente no lo uso, pero vim -c ... también funciona
EDITAR:
La solución dada anteriormente supone que la tabulación predeterminada de 8 es apropiada. Si, por ejemplo, se desea una tabulación de 4, use la secuencia de comandos "set ts=4|set et|retab|wq" .
¿Hay alguna forma de ejecutar un comando Vim en un archivo desde la línea de comando?
Sé que lo opuesto es verdad así:
:!python %
Pero, ¿y si quisiera :retab un archivo sin abrirlo en Vim? Por ejemplo:
> vim myfile.c
:retab | wq
Esto abrirá miarchivo.c, reemplazará las pestañas con espacios, y luego guardará y cerrará. Me gustaría encadenar esta secuencia a un solo comando de alguna manera.
Sería algo como esto:
> vim myfile.c retab | wq
No es una respuesta directa a su pregunta, pero si desea reemplazar las pestañas con espacios (o hacer cualquier otra búsqueda / reemplazo de expresiones regulares) para obtener una lista de archivos, puede usar sed search / replace in situ:
sed -i ''s//t/ /g'' foo1.txt foo2.txt
o
ls *.txt | xargs sed -i ''s//t/ /g''
(En este ejemplo, estoy reemplazando cada carácter de tabulación con tres espacios).
NOTA: la bandera -i significa operar en el lugar.
De la página del hombre sed :
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension
supplied)
Tienes varias opciones:
-c "commands": ejecutará comandos Ex a medida que los ingresó en la línea de comando.
En su ejemplo:vim myfile -c ''retab | wq''vim myfile -c ''retab | wq''. Esto es lo que sugirió Firstrock.-S "vim source file": fuente de script vim dado
(como ejecutarvim -c "source ''vim source file''"):Si tiene un archivo
script.vimcontenga:retab wqEntonces puedes usar
vim myfile.c -s script.vim(la extensión en realidad no importa)-s "scriptin file": reproducirá el contenido del archivo ya que contiene comandos de modo normal : si tienescript.txtcontenga::retab ZZcon un final de líneas que consiste en un único carácter
^M(por ejemplo, usted guardó el script usando:set fileformat=mac | w), entonces puede ejecutar:vim myfile.c -S script.txt(ZZes otra forma de salir vim y guardar el archivo actual).
Tenga en cuenta que puede grabar esos scripts convim my_file -W script.txt, pero sufre un error si usa gvim (la GUI).