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

Publicado por Phillipe Smith em 12/01/2016

[ Hits: 4.292 ]

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

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

Posicionando o AWN (Avant Window Navigator)

Video Converter: Convertendo vídeos no Linux facilmente

Lakka - Uma distro para games retrô

Limpando a memória cache no Linux

Leitura recomendada

Descobrindo endereço IP do modem

Instalar ou Remover Múltiplos pacotes no Void Linux

Resolvendo problemas de autenticidade de pacotes

"Criando" um comando

Permitindo PPA no Elementary OS Loki

  

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