excluir linhas que correspondam a um padrão de uma determinada linha até o final do arquivo

10

Se eu tenho um arquivo com muitos comentários e quero excluir todos os comentários da linha 3 até o final do arquivo, qual é a melhor maneira de fazer isso?

Estou preso, pois o que tentei pela primeira vez não parece exatamente o que quero:

:3,$/^#/d

Em vez de procurar o padrão e excluir linhas com ele no intervalo de 3 ao final do arquivo, ele exclui todas as linhas de 3 a uma linha que corresponde ao padrão e, em seguida, para.

Então, como aplico um comando ex a um intervalo de linhas. Nesse caso, é para o final de um arquivo, mas seria diferente se eu o fizesse com uma marca ou entre as linhas 10 e 20 ou outros intervalos?

Eric Renouf
fonte

Respostas:

15

Use o :globalcomando para isso:

:3,$g/^#/d

Você pode aplicá-lo a linhas que não correspondem a um padrão:

:3,$g!/^#/d

Você pode usar o mecanismo de gama completa com ele (consulte :help :range):

:.,/#define/+3g/^#/d

E você pode usá-lo com qualquer comando:

:3,$g/^#/s/foo/bar/g

É um dos comandos mais poderosos do Vim, consulte :help :globalpara obter detalhes.

lcd047
fonte
Você também pode usar :3,$v/foo/dpara linhas que não correspondem a um padrão. :h vglobal
Vappolinario 9/06/15