2012-03-05 2 views

ответ

6

Вы можете использовать эту команду:

:g/BEGIN/,/END/d 

Если вам не нужно, чтобы удалить ключевые слова:

:g/BEGIN/+1,/END/-1d 
+0

спасибо, но ... последняя строка, которую я хочу удалить, находится в конце файла, но первая строка, которую я хочу удалить, не является первым из файла ... – Antonio

+3

'BEGIN' /' END 'это просто ключевые слова, измените их на все, что бы удовлетворить ваши потребности. – kev

1

Учитывая

последней строки, я хочу, чтобы удалить находится в конце файла, но первая строка, которую я хочу удалить, не является первой из файлов

Я хотел бы использовать:

%s/\_.*\zs\n\=.*BEGIN\_.*END.*// 

->:h /\_., :h /\zs => до \zs все (новой строки/CR, а), которые могут быть сопоставлены сопоставляется (включены первые вхождения НАЧАТЬ, что вы, похоже, хотите игнорировать). Затем все строки (и предыдущие \n) линии для удаления совпадают до END (и ее полной строки).

+0

Можете ли вы объяснить мне, как удалить только внутренние ключевые слова? – slackmart

+0

Переместите шаблон длины '\ zs' 0-length, чтобы указать, где вы хотите, чтобы соответствие действительно начиналось (что перед тем, как становится только контекстом). И добавьте шаблон зоны-конца ('\ ze') ->'% s/\ _. * \ N \ =. * BEGIN \ zs \ _. * \ ZeEND. * // ' –

+0

Спасибо, он работает !!! – slackmart

Смежные вопросы