eliminar líneas que coinciden con un patrón desde una línea determinada hasta el final del archivo

10

Si tengo un archivo con muchos comentarios y quiero eliminar todos los comentarios de la línea 3 al final del archivo, ¿cuál es la mejor manera de hacerlo?

Estoy atascado, ya que lo que probé por primera vez no parece hacer lo que quiero:

:3,$/^#/d

En lugar de buscar el patrón y eliminar líneas con él en el rango de 3 al final del archivo, elimina todas las líneas de 3 a través de una línea que coincida con el patrón, y luego se detiene.

Entonces, ¿cómo aplico un comando ex a un rango de líneas? En este caso es hasta el final de un archivo, pero ¿sería diferente si lo hiciera en una marca, o entre las líneas 10 y 20 u otros rangos?

Eric Renouf
fuente

Respuestas:

15

Use el :globalcomando para eso:

:3,$g/^#/d

Puede aplicarlo a líneas que no coinciden con un patrón:

:3,$g!/^#/d

Puede usar el mecanismo de rango completo con él (ver :help :range):

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

Y puedes usarlo con cualquier comando:

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

Es uno de los comandos más poderosos en Vim, por favor vea :help :globalpara más detalles.

lcd047
fuente
También puede usarlo :3,$v/foo/dpara líneas que no coinciden con un patrón. :h vglobal
vappolinario