我可以在 vim 命令行中使用 perl 正则表达式吗?

我可以在 vim 命令行中使用 perl 正则表达式吗?

我想在 vim 命令行上使用 perl 正则表达式。例如,要将当前行的单词大写,您可以输入:

:s/(\w+)/\u$1/g

答案1

您可以使用 ! 通过 vim 中的外部命令过滤任何行或行范围。例如,您可以执行以下操作:

:.!perl -pe "s/(\w+)/\u\1/g"

这将通过该 perl 命令过滤当前行。(此处:进入命令行模式,.后面的表示当前行;您还可以指定行范围或%整个文件等。)

如果您想使用 vim 的内置替换模式,最接近的方法是使用 vim 的“非常神奇”的选项 \v,如下所示:

:s/\v(\w+)/\u\1/g

请参阅:help pattern:help substitute了解更多详情。我不认为“very magic”与 perl 的模式完全相同,但非常接近。无论如何,如果您更喜欢 perl,您可以随时使用 perl 本身,如上所述。

答案2

您还可以使用:

/\v"your regex"

代替:

/"your regex"

答案3

不,您不能以这种方式使用 Perl 正则表达式。有关学习 Vim 中 Perl 正则表达式组件的帮助,请参阅

:help perl-patterns

但是,你可以使用 Perl 作为外部过滤器,如 frabjous 所解释的那样。如果你的 Vim 是使用此功能编译的,你也可以使用 Perl 接口在 Vim 中执行 Perl 命令。+perl请参阅

:help if_perl.txt

答案4

使用eregex 工具插件。它非常有用,而且我使用它没有遇到任何问题。

相关内容