我想在 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 工具插件。它非常有用,而且我使用它没有遇到任何问题。