Учитывая
последняя строка, которую я хочу удалить, находится в конце файла, но первая строка, которую я хочу удалить, не первая из файла
Я бы использовал:
%s/\_.*\zs\n\=.*BEGIN\_.*END.*//
-> :h /\_.
, :h /\zs
=> до \zs
, все (и новые строки / CR), которые могут быть сопоставлены, сопоставляется(включены первые появления BEGIN, которые вы, кажется, хотите игнорировать).Затем выполняется сопоставление всей строки (и ее предыдущей \n
) удаляемой строки до конца (и ее полной строки).