Execute uma macro vim de dentro de um script bash

Execute uma macro vim de dentro de um script bash

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/ awke em vez de vipara 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 -ctambé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.

informação relacionada