удалить строки, которые соответствуют шаблону от данной строки до конца файла

10

Если у меня есть файл с большим количеством комментариев, и я хочу удалить все комментарии, скажем, от строки 3 до конца файла, каков наилучший способ сделать это?

Я застрял, поскольку то, что я впервые попробовал, похоже, не совсем то, что я хочу:

:3,$/^#/d

Вместо того, чтобы искать шаблон и удалять строки с ним в диапазоне от 3 до конца файла, он удаляет все строки от 3 до строки, соответствующей шаблону, а затем останавливается.

Итак, как мне применить команду ex к ряду строк. В этом случае это до конца файла, но было бы иначе, если бы я делал это с отметкой, или между строками 10 и 20 или другими диапазонами?

Эрик Ренуф
источник

Ответы:

15

Используйте :globalкоманду для этого:

:3,$g/^#/d

Вы можете применить его к строкам, не соответствующим шаблону:

:3,$g!/^#/d

Вы можете использовать механизм полного диапазона (см. :help :range):

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

И вы можете использовать его с любой командой:

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

Это одна из самых мощных команд в Vim, смотрите :help :globalподробности.

lcd047
источник
Вы также можете использовать :3,$v/foo/dдля линий, которые не соответствуют шаблону. :h vglobal
ваполинарио