Precisa de ajuda para formular uma pesquisa e substituição do Vim

1

Eu tenho um grande arquivo html em que eu preciso pesquisar e substituir mais de 2000 ocorrências de uma string específica. Eu poderia fazê-lo manualmente, mas tenho certeza de que existe um poderoso comando de pesquisa e substituição do Vim que poderia fazê-lo.

Eu tenho notas de rodapé que preciso substituir uma parte específica do texto do hiperlink.

O link da nota de rodapé está formatado gostou disto:

&ltsup>&lta href='#footnote-2020'>2020&lt/a>&lt/sup>

Existem mais de 2000 notas de rodapé, cada uma com o rótulo 1-2020. Eu gostaria de remover o texto âncora (2020 no exemplo acima) e substituí-lo por um *. Gostaria de deixar o texto href '# footnote-2020' como é para preservar o link.

Há algum usuário do Power Vim que possa criar uma pesquisa rápida e substituir o comando?

Obrigado!

    
por user250771 03.09.2013 / 00:41

1 resposta

1

Tente isto:

:%s,\(<a href='#footnote-\d\+'>\)\d\+\(</a>\),*,g

Para dividir:

% - Operar sobre o arquivo inteiro (este é um intervalo especial)
,...,..., - Normalmente, o delimitador para: substituto é /, mas pode ser qualquer coisa. Eu usei vírgulas por causa do < / a > tag.
\(...\) - Cria uma subexpressão, para uso no padrão de substituição. Dois deles são usados.
\d\+ - Corresponde a qualquer dígito, e o \+ faz com que ele corresponda a um ou mais.
/ - No padrão de substituição, é substituído pelo primeiro. e a segunda subexpressão mencionada anteriormente.
g - O sinalizador "g" após um padrão de substituição diz operar globalmente em cada linha, e não apenas na primeira partida em uma linha.

Tudo isso e mais é explicado em :help pattern.txt , mas isso pode ser esmagador. Existe um livro chamado "Mastering Regular Expressions" que pode ser útil.

    
por 03.09.2013 / 04:14