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

Publicado por Phillipe Smith em 12/01/2016

[ Hits: 1.266 ]

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ô

Video Converter: Convertendo vídeos no Linux facilmente

Limpando a memória cache no Linux

Posicionando o AWN (Avant Window Navigator)

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

Leitura recomendada

Imprimindo com múltiplas páginas em uma mesma folha

Criando aliases úteis

Montar partição na memória RAM

Comandos grep, fgrep e egrep

Quem se logou no seu sistema

  

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 HostGator.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts