
Em um script bash, quero editar um arquivo. Existe uma maneira de escrever uma macro no vim, salvá-la e depois chamá-la no script bash?
Responder1
Não tem problema: crie o arquivo de macro com comandos vi. Por exemplo:
:1,$s/a/b/g
:wq
Então corravi -s macro_file data_file
Um conselho: tente usar sed
/ awk
e em vez de vi
para esse propósito
Responder2
Este é um exemplo do uso do vim para criar versões HTML de arquivos com o vim:
for f in *.c; do
vim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" "$f"
done
Responder3
Você poderia usar o ex
, que vem com o vim e é a ferramenta de linha de comando do vim.
A resposta de Eran está definitivamente correta, mas eu pessoalmente usaria ex -c
( vim -c
também é possível):
> echo asdf > blub
> ex blub -c "normal a_" -c "normal l.l.l." -c wq
> cat blub
a_s_d_f_
Esta é a minha forma preferida, porque não existem vários arquivos.
Se você remapear escape para jj (por exemplo), poderá facilmente fazer instruções normais mais complicadas:
ex file -c "normal a_jjl.l.l." -c wq
Para a sua informação:
- normalenvia cartas no modo normal para
- qqsai do programa
- para enviar vários comandos em uma string (sem opção -c adicional), use a barra vertical |. Mas: Isso não funciona no caso normal.
- Isso funciona apenas para 10 -c's. Mas para mais comandos, eu recomendaria criar um arquivo.