为什么要将正则表达式设置为“非常魔法”,以避免转义捕获引号?如果将环境设置为“非常魔法”,则不符合标准且可能存在遵从性问题。我只是想知道,为什么Vim使用与Perl不同的正则表达式语法?
大多数vi(因此vim)功能均源自ed。 vi和ed的发布时间都比Perl早至少十年或二十年。 一个更好的问题可能是“为什么Perl不使用与vi相同的正则表达式语法?”。
当然,也可以认为,在文本编辑器中希望编写以执行常见任务的正则表达式的类型与在编程语言中想要编写的类型可能非常不同。
\%
或\\_
开头的所有内容。 - too much php有一个插件叫做eregex.vim,它可以将PCRE的语法翻译成Vim的语法。该插件需要超过一千行的vim代码来实现这种翻译!
:%s/^foo \zsbar/moo/g
\zs
使得设置正向后顾和 \ze
使得设置正向前瞻更加容易。:'<,'>s/\%Vthis/that/g
\%V
的限制,替换仅限于可视区域。
\(\)\+
但不是其他的^$*[]
有点愚蠢。 - Mateen Ulhaqa.*?b
将变为a.\{-}b
。现在 PCRE 是行业标准,gvim 中一定有一些工具可以使用 PCRE……甚至可以编译一个新的 vim 来使用 PCRE。 - ihightower