supprimer les lignes qui correspondent à un modèle d'une ligne donnée jusqu'à la fin du fichier

10

Si j'ai un fichier contenant beaucoup de commentaires et que je souhaite supprimer tous les commentaires de la ligne 3 jusqu'à la fin du fichier, quelle est la meilleure façon de le faire?

Je suis coincé, car ce que j'ai essayé pour la première fois ne semble pas faire exactement ce que je veux:

:3,$/^#/d

Au lieu de rechercher le modèle et de supprimer des lignes avec lui dans la plage de 3 à la fin du fichier, il supprime toutes les lignes de 3 à une ligne qui correspond au modèle, puis s'arrête.

Alors, comment puis-je appliquer une commande ex à une gamme de lignes. Dans ce cas, c'est à la fin d'un fichier, mais serait-il différent si je le faisais à une marque, ou entre les lignes 10 et 20 ou d'autres plages?

Eric Renouf
la source

Réponses:

15

Utilisez la :globalcommande pour cela:

:3,$g/^#/d

Vous pouvez l'appliquer aux lignes ne correspondant pas à un motif:

:3,$g!/^#/d

Vous pouvez utiliser le mécanisme de gamme complète avec lui (voir :help :range):

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

Et vous pouvez l'utiliser avec n'importe quelle commande:

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

C'est l'une des commandes les plus puissantes de Vim, veuillez voir :help :globalpour plus de détails.

lcd047
la source
Vous pouvez également utiliser :3,$v/foo/dpour les lignes qui ne correspondent pas à un modèle. :h vglobal
vappolinario