main

Многострочная замена в vim

Изредка мне попадается задача вида "выкосить скрипты из произвольной html'ины". Задача достаточно редкая, чтобы сразу же гуглить, но достаточно нудная чтобы хотеть её оптимизировать. Долгое время делал по старинке - "<script", "^v", "d", повторить. Вобщем, чёрная магия:

:%s/<script\_.\{-}<\/script>//gc

Как нетрудно заметить, здесь есть подвох: это уже не POSIX, но ещё не PCRE. "Нежадный" квантификатор - "\{-}" (POSIX - нет, PCRE - ".*?"), совпадение с newline - "\_." (POSIX - костыль с ([\r\n]*|[:print:]*), PCRE - модификаторы "m"/"s")

vim