
En un script bash quiero editar un archivo. ¿Hay alguna manera de escribir una macro en vim, guardarla y luego llamarla en un script bash?
Respuesta1
No hay problema: cree el archivo de macro con comandos vi. Por ejemplo:
:1,$s/a/b/g
:wq
Entonces correvi -s macro_file data_file
Un consejo: intenta usar sed
/ awk
y en lugar de vi
para este propósito
Respuesta2
Este es un ejemplo del uso de vim para crear versiones HTML de archivos con vim:
for f in *.c; do
vim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" "$f"
done
Respuesta3
Podrías usar ex
, que viene con vim y es la herramienta de línea de comandos para vim.
La respuesta de Eran es definitivamente correcta, pero yo personalmente usaría ex -c
( vim -c
también es posible):
> echo asdf > blub
> ex blub -c "normal a_" -c "normal l.l.l." -c wq
> cat blub
a_s_d_f_
Esta es mi forma preferida, porque no hay varios archivos.
Si reasigna escape a jj (por ejemplo), puede hacer fácilmente declaraciones normales más complicadas:
ex file -c "normal a_jjl.l.l." -c wq
Para tu información:
- normalenvía cartas en modo normal a
- wqsale del programa
- para enviar varios comandos en una cadena (sin opción -c adicional), utilice el carácter de barra vertical |. Pero: esto no funciona en el caso normal.
- Esto funciona sólo para 10 -c. Pero para más comandos, recomendaría crear un archivo.