0

It is possible to delete all lines matching a pattern using :g/pattern/d.

Using the following command, you can replace words matching a pattern, 20 lines after where the cursor currently is: :s/pattern/changed_pattern/g20

How do you delete all lines matching a pattern, but N lines after where the cursor currently is ?

I've tried : 34,50/pattern/d however it delete backward, and inconsistently. Beside, it requires you to know exactly the lines between which to apply the deletion.

2
  • 1
    Can you please provide a short example input with the expected output?
    – Quasímodo
    Jul 17 '20 at 20:00
  • What do you mean by "backward" and "inconsistently"? An example of what you're seeing and what you expected might help...
    – filbranden
    Aug 16 '20 at 19:58
1

These commands should do the trick

:global/pattern/.+1,.+Ndelete
:global/pattern/\/+1,\/+Ndelete

The key is to understand [range] for delete command.

  • .+1 one line after cursor line
  • .+N N lines after cursor line
  • \/+1 one line after current match
  • \/+N N lines after current match

See :help cmdline-ranges for more details.

Be aware it will delete pattern if it is in N lines range!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.