2009-04-24 2 views
97

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

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

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

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

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

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

ответ

150

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

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

/This\_.*text/ 
+2

http://blog.vinceliu.com/2007/12/regular-expression-matching-more-than.html –

+2

Nice - моя жизнь только что получил немного легче. Я делал (. | \ N) * – ojrac

+2

Что делает косая черта в ': h/\ _.' Делать? Я имею в виду, я знаю, что это работает, но почему работает ': h/\ _.', А не ': h \ _.'? – Eddified

Смежные вопросы