Executa uma macro vim dentro de um script bash

7

Em um script bash eu quero editar um arquivo. Existe uma maneira de escrever uma macro no vim, salvá-lo e chamá-lo no script bash?

    
por hknik 25.03.2012 / 22:14

3 respostas

7

Não tem problema: Crie o arquivo de macro com comandos vi. Por exemplo:

:1,$s/a/b/g
:wq

Em seguida, execute vi -s macro_file data_file

Um conselho: tente usar sed / awk e, em vez de vi , para essa finalidade

    
por 26.03.2012 / 11:50
2

Este é um exemplo do uso do vim para criar versões em HTML de arquivos com o vim:

for f in *.c; do
    vim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" "$f"
done
    
por 26.03.2012 / 13:18
2

Você pode usar 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 uso 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 maneira preferida, porque não há vários arquivos.

Se você remapear para jj (por exemplo), você pode facilmente fazer declarações normais mais complicadas:

ex file -c "normal a_jjl.l.l." -c wq

Para sua informação:

  • normal envia letras no modo normal para
  • wq encerra o programa
  • para enviar vários comandos em uma string (sem opção adicional -c), use o caractere pipe |. Mas: Isso não funciona no caso normal.
  • Isso funciona apenas para 10-c's. Mas, para mais comandos, recomendo criar um arquivo.
por 26.03.2012 / 16:05

Tags