Vim 中的多行正则表达式支持

我注意到跨多行匹配的标准正则表达式语法是使用/s,如下所示:

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

例如,这在 Perl 中可以工作,但在 Vim 中似乎不受支持。相反,我必须说得更具体一些:

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

我找不到任何理由来解释为什么会这样,所以我想我可能只是错过了 Vim 帮助中的相关部分。

有人能证实这种行为吗?

42109 次浏览

是的,Perl 的 //s修饰符在 Vim 正则表达式上不可用。有关 Vim 和 Perl 正则表达式之间的细节和其他差异的列表,请参见 :h perl-patterns

相反,您可以使用 \_.,这意味着“匹配包括换行符在内的任何单个字符”。比你的短一点。见 :h /\_.

/This\_.*text/