Поддержка многострочного регулярного выражения в 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/