Pular para o conteúdo

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

Dica publicada em Linux / Comandos
Phillipe Smith SmithuX
Hits: 5.235 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar

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
  • \2<\/li>/

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

  • Posicionando o AWN (Avant Window Navigator)

    Lakka - Uma distro para games retrô

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

    Limpando a memória cache no Linux

    Video Converter: Convertendo vídeos no Linux facilmente

    Descobrindo qual distribuição GNU/Linux você está utilizando

    Unity - Atalhos para captura de tela

    Como baixar o código HTML de um site por linha de comando no Linux

    Gravação de Áudio do Computador Via Terminal

    Xlsclients: Listando aplicações que estão utilizando recursos do X

    #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

    Entre na sua conta para comentar.