Поддержка многострочного регулярного выражения в Vim

Я замечаю, что стандартный синтаксис регулярных выражений для сопоставления по нескольким строкам заключается в использовании /s, например:

This is\nsome text
/This.*text/s

Это работает в Perl, но, похоже, не поддерживается в Vim. Вместо этого я должен быть более конкретным:

/This[^\r\n]*[\r\n]*text/

Я не могу найти причин, почему это должно быть, поэтому я думаю, что, вероятно, я просто пропустил соответствующие биты в помощи vim.

Кто-нибудь может подтвердить это поведение так или иначе?

Ответ 1

Да, модификатор Perl //s недоступен в регулярных выражениях Vim. Подробнее см. :h perl-patterns и список других различий между регулярными выражениями Vim и Perl.

Вместо этого вы можете использовать \_., что означает "соответствовать любому одиночному символу, включая новую строку". Это немного короче, чем у вас. См. :h /\_..

/This\_.*text/