Substituição avançada de texto no Vi/Vim

Publicado por Phillipe Smith em 12/01/2016

[ Hits: 5.051 ]

Blog: http://phillipelnx.com

 


Substituição avançada de texto no Vi/Vim



Atendendo uma dúvida do colega xerxeslins no fórum do VOL, aqui vai uma pequena dica de como substituir textos no VI/Vim de forma avançada sem a necessidade de utilizar plugins.

Obs.: é necessário ter um mínimo conhecimento sobre expressões regulares.

Suponhamos que queira adicionar tags HTML há várias linhas de um texto, você poderá realizar a tarefa da seguinte forma:

Primeiramente, pressione a tecla ( v ) e selecione o texto desejado.

Depois, pressione a tecla dois pontos ( : ) e então insira o seguinte código:

s/\( *\)\(.*\)/\t\1<li>\2<\/li>/

Ficará conforme imagem abaixo:
O resultado deverá ficar conforme abaixo:
Bem, é isso! Espero que a dica seja útil!

Outras dicas deste autor

Limpando a memória cache no Linux

Lakka - Uma distro para games retrô

Posicionando o AWN (Avant Window Navigator)

Video Converter: Convertendo vídeos no Linux facilmente

Passagem de parâmetros para funções shell script

Leitura recomendada

Ativar tecla Num Lock na inicialização do Linux

Tocando CDs de áudio via cdda2wav

Direcionando saídas de comandos

Recuperação de sistema de arquivos por queda de energia

Compactação de arquivos PDF com GhostScript

  

Comentários
[1] Comentário enviado por emilioeiji em 13/01/2016 - 10:46h

Pra ficar melhor só faltou explicar melhor os parâmetros.

[2] Comentário enviado por SmithuX em 13/01/2016 - 13:03h


[1] Comentário enviado por emilioeiji em 13/01/2016 - 10:46h

Pra ficar melhor só faltou explicar melhor os parâmetros.

Vixi... é verdade meu camarada.
Como não dá mais pra editar a dica, então vou fazer uma breve explicação aqui no comentário:

1) Quando pressionada a tecla ( V ) no Vi/Vim, vai para o modo visual onde é possível selecionar partes do texto com as teclas de movimentação, além de outras coisas;
2) A expressão regular utilizada na dica significa o seguinte:
s/.../.../ = Significa substituir uma ou mais expressões por outras, sendo os primeiros ( ... ) o que deve ser substituído, em seguida, pelo quê deve ser substituído

\( *\)\(.*\) = Significa que vamos, primeiramente, capturar/agrupar () todos os espaços encontrados e, logo depois, faremos a mesma coisa, mas para qualquer
outro conteúdo encontrado. Cada \(....\) representa um grupo onde tudo que foi capturado pode ser recuperado depois utilizando a denominação \numero_do_grupo (\1, \2,\ 3 ...) .

\t\1<li>\2<\/li> = Aqui é atribuído uma tabulação ( \t ), adicionado os espaços que capturamos na expressão anterior ( \1 ), e então, adicionamos as tags html desejadas, e no centro delas inserido tudo que foi capturado no segundo grupo da expressão anterior ( \2 ).



Contribuir com comentário