Mágicas do VIM – Macros

July 1, 2007

Meu editor para programação favorito é o VIM. Sou fanático por esse maravilhoso editor e suas funcionalidades. Qualquer coisa que peçam para eu programar, o utilizo. Minha última descoberta foi sobre o maravilhoso esquema de macros dele. Macros existem para nos poupar do horrível trabalho de fazer passos repetidamente. Por exemplo, tu tem o seguinte trecho no seu arquivo:

symbol O 0
symbol VIM 1
symbol É 2
symbol MÁGICO 3

Se tu quiser retirar em cada linha a palavra symbol, os números e os espaços, pode-se gravar uma macro para isso. Sem estar em modo nenhum (<ESC>), aperte em q e mais uma letra, para identificar a macro. Agora, aparecerá a palavra “recording” no rodapé do VIM. Entre no modo de inserção (<INSERT>) e faça para a primeira linha o que tu quer que seja gravado na macro. Quando tiver terminado, saia do modo de inserção e aperte apenas q. Assim, tua macro estará pronta para ser usada. Vá para a próxima linha e aperte @<letra_definida_à_macro>. Por exemplo, se tu definiu a letra ‘a’ para identificar a macro, aperte @a. Todos os passos que tu tinha gravado na macro serão executados nessa linha. Executando isso linha por linha, ficaremos com:

O
VIM
É
MÁGICO

E está feito. Se tu não quiser fazer isso para cada linha (vamos dizer que tu tenha 100 linhas para alterar), tu pode gravar na macro para ele ir para a próxima linha depois de completar tudo. Quando tu for executar a macro, posicione o cursor na primeira linha a ser alterada e digite (sem estar no modo de inserção) 100@<identificador_da_macro>. Assim, o VIM irá chamar 100 vezes tua macro, como foi gravado para ele pular para a próxima linha no final, as 100 linhas são alteradas todas de uma vez.

Mágico!

2 Responses to “Mágicas do VIM – Macros”

  1. Cara, realmente as macros são fantásticas!! Será que você poderia dar algum exemplo usando-as? Por exemplo, tenho um arquivo como uma lista de informações à esquerda, cada uma com um tamanho e gostaria de no final da linha, na coluna 70, adicionar o texto ‘ –> ‘. Seria um bom exemplo?

  2. Opa…

    Eu dei um exemplo no texto…
    Não sei se é possível ir exatamente para uma coluna de uma linha, procurei na internet e não achei nada.
    Mas se tu quer inserir um ‘->’ no final de cada linha, não importando em qual coluna vai ser, tu pode fazer da seguinte maneira:
    - aperte “q”, para entrar no modo de gravação de macro (sem as aspas, é claro, e substituindo “” por alguma letra de tua preferência);
    - na primeira linha, faça seguinte seqüêcia: (para ir para o início da linha, é sempre bom fazer isso), (para entrar no modo de inserção), (para ir para o final da linha), digite a seqüência de caracteres que tu quer inserir (no caso, “->”), aperte a tecla direcional para baixo no teclado (para ir para a próxima linha), aperte (para sair do modo de inserção), aperte “q” para terminar de gravar a macro (sem as aspas);
    - agora é só mandar executar a macro digitando o número de vezes que esses passos devem ser repetidos @, substituindo “” pela letra que tu escolheste para identificar a macro; o VIM não pode estar nem e modo visual nem de inserção.

    Espero ter ajudado.

Leave a Reply