Como substituir uma linha no vim?

2

Eu tenho um arquivo de hosts ipv6. Não, quero adicionar um símbolo de comentário # a cada linha que tenha "google.com.hk".

Como eu poderia fazer isso no vim? Eu pensei que seria algo como %s/^.*google\.com\.hk/^#???/ .

obrigado.

    
por Jichao 28.08.2010 / 14:30

2 respostas

6

Use & no texto de substituição para representar toda a string original:

%s/^.*google\.com\.hk/#&/

ou, para evitar a substituição de itens como not-google.com.hk e google.com.hk.example.com :

%s/^.*[ .]google\.com\.hk\( \|$\)/#&/

Como alternativa, use o comando g para aplicar um comando s a todas as linhas correspondentes:

g/[ .]google\.com\.hk\( \|$\)/ s/^/#/
    
por 28.08.2010 / 14:43
2

Assim:

%s/\(^.*google\.com\.hk\)/# /

Isso informa ao VIM para pesquisar o que está entre parênteses, neste caso ^.*google\.com\.hk , e colocar isso na variável . Então você substitui tudo o que encontrou antes com # seguido por .

Como alternativa, você pode fazer:

%s/^.*google\.com\.hk/# &/

Onde o & é uma abreviação para o que foi correspondido

    
por 28.08.2010 / 14:41

Tags