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

Publicado por Phillipe Smith em 12/01/2016

[ Hits: 4.474 ]

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

Lakka - Uma distro para games retrô

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

Video Converter: Convertendo vídeos no Linux facilmente

Limpando a memória cache no Linux

Posicionando o AWN (Avant Window Navigator)

Leitura recomendada

Procurando links quebrados

Usando o RPM

Criando um usuário exclusivo para desligar a máquina

Os comandos "which" e "whereis"

Find - Pesquisar trechos (strings) dentro de arquivos

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts