Поддержка многострочных регулярных выражений в Vim - PullRequest
106 голосов
/ 24 апреля 2009

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

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

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

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

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

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

1 Ответ

165 голосов
/ 24 апреля 2009

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

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

/This\_.*text/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...