我能否让vim接受\b而不仅仅是\<和\>? 这个问题涉及到IT技术。

8

6
不,Vim使用自己的正则表达式引擎和语法,其中\b已经有了它自己的含义:"退格键"。 - romainl
2
请查看 Vim Tips Wiki 上的 Perl 兼容正则表达式。Perl compatible regular expressions - Wiktor Stribiżew
@stribizhev:把它变成一个答案,我认为。虽然对我来说行不通,因为在 Fedora 20(呕吐)上编译 vim 时使用了“-perl”。 - einpoklum
需要注意的一点是:如果你使用\v来使你的正则表达式“非常神奇”,那么你可以使用<>代替\<\>,这样会更加方便,通常会让Vim的正则表达式感觉更像Perl。Loupe插件可用于将\v设置为默认值。 - Greg Hurrell
1个回答

8
由于Vim的正则表达式采用\b作为退格符号,并且没有其他可供重定义的简写构造,您只能使用可以用于Vim的PCRE正则表达式引擎使其工作,这些内容在Perl compatible regular expressions Vim Tips Wiki中有所描述。
以下是该页面的说明:
  1. 使用:ver验证+perl+perl/dyn是否已编译。

  2. 如有必要,请安装Perl。在Windows上,ActivePerl是标准的,但任何不需要其他Perl模块的perl58.dll都可以使用。如果你不想完全安装perl,可以将perl58.dll从Strawberry Perl 5.8.x复制到vim.exe所在的文件夹中,然后下面的命令就可以工作了。

  3. 键入:perldo s/searchme/replaceme/g

注意:+perl/dyn似乎并不必要。

或者,如果Ruby已编译,则也可以使用Ruby的正则表达式来识别\b作为单词边界:

或者,如果Ruby已编译(在:ver输出中查找+ruby

等同于s/pattern/replacement/g

:rubydo gsub /pattern/,'replacement'


1
这实际上是 几乎%!perl -lpe 's/pattern/replacement/g' 一样容易的。 :) - Sato Katsura

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接