Neste exeplo vou mostrar uma manipulação de um script SQL que faz o insert com os valores do id, nome e telefone numa tabela cliente. O
Desta forma, precisarei fazer a transformação do script de
insert into cliente (id, nome, telefone) values (1, 'Cliente1', 123456);
insert into cliente (id, nome, telefone) values (2, 'Cliente2', 234567);
.
.
.
insert into cliente (id, nome, telefone) values (10, 'Cliente10', 987654);
para algo parecido com
insert into cliente (id, nome) values (1, 'Cliente1');
insert into cliente_fone values (1, 123456);
insert into cliente (id, nome) values (2, 'Cliente2');
insert into cliente_fone values (2, 234567);
.
.
.
insert into cliente (id, nome) values (10, 'Cliente10');
insert into cliente_fone values (10, 987654);
Como você deve ter percebido, para manipular este script manualmente seria necessário duplicar cada linha, alterar a linha original removendo o número do telefone e alterar a linha copiada adicionando removendo o nome do cliente e mudando o nome da tabela. Para automatizar esta tarefa no VIM ou GVIM, executarei os seguintes comandos:
qq - Inicia a gravação no registrador "q"
yy - Copia a linha atual
p - Cola a linha copiada abaixo da linha atual
k - Posiciona o cursor na linha de cima
/) - Posiciona o cursor no parêntese antes de "values"
d, - Apaga a palavra "telefone" até a vírgula
/); - Posiciona o cursor no último parêntese
d, - Apaga a última palavra até a vírgula (o número do telefone)
j - Move o cursor para a linha de baixo
0 - Posiciona o cursor no início da linha
:s/cliente/cliente_fone - Substitui "cliente" por "cliente_fone", o nome da table
/nome - Posiciona o cursor em "nome"
dW - Apaga a palavra "nome"
/( - Posiciona no próximo parêntese
W -Posiciona na próxima palavar
dW - Apaga a palavra inteira, no caso "'Cliente1',"
j - Finalmente, posiciona o cursor na próxima linha, para completar o looping
Um registrador foi gravado na letra "q". Agora basta posicionar o cursor no início do arquivo e digitar "@q" para executar a sequência gravada. Para rodar várias vezes, digite o número de loopings seguido pelo registrador, por exemplo "10@q".
Referências
http://aurelio.net/curso/material/vim-ref.html
http://www.primeirospassos.org/sessao3_4.html
Até o próximo post!

0 comentários:
Postar um comentário