Многострочная замена в vim
Изредка мне попадается задача вида "выкосить скрипты из произвольной html'ины". Задача достаточно редкая, чтобы сразу же гуглить, но достаточно нудная чтобы хотеть её оптимизировать. Долгое время делал по старинке - "<script"
, "^v"
, "d"
, повторить. Вобщем, чёрная магия:
:%s/<script\_.\{-}<\/script>//gc
Как нетрудно заметить, здесь есть подвох: это уже не POSIX, но ещё не PCRE. "Нежадный" квантификатор - "\{-}"
(POSIX - нет, PCRE - ".*?"
), совпадение с newline - "\_."
(POSIX - костыль с ([\r\n]*|[:print:]*)
, PCRE - модификаторы "m"/"s")