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.vim
contenga:retab wq
Entonces 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.txt
contenga::retab ZZ
con 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
(ZZ
es 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).