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?

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.


Vous pouvez également utiliser :3,$v/foo/dpour les lignes qui ne correspondent pas à un modèle. :h vglobal
vappolinario
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.