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


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

This isnsome text
/This.*text/s

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

/This[^rn]*[rn]*text/

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

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

1 102

1 ответ:

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

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

/This\_.*text/