我想在 vim 命令行上使用 perl 正则表达式。例如,要将当前行上的单词大写,您可以键入:
:s/(\w+)/\u$1/g
Run Code Online (Sandbox Code Playgroud)
fra*_*ous 20
您可以通过 vim 中的外部命令使用 ! 过滤任何行或行范围。例如,你可以这样做:
:.!perl -pe "s/(\w+)/\u\1/g"
这将通过该 perl 命令过滤当前行。(这里:
进入命令行模式,.
后面的表示当前行;也可以指定行范围或%
整个文件等)
如果你想使用 vim 的内置替换模式,你最接近的是使用 vim 的“非常神奇”的选项,\v,如下所示:
:s/\v(\w+)/\u\1/g
查看:help pattern
和:help substitute
了解更多详情。我不认为“非常神奇”与 perl 的模式完全相同,但非常接近。不管怎样,如果你对 perl 感觉更舒服,你总是可以使用 perl 本身,如上所述。
gar*_*ohn 11
不,您不能以这种方式使用 Perl 正则表达式。有关学习 Perl 正则表达式组件的 Vim 等效项的帮助,请参阅
:help perl-patterns
Run Code Online (Sandbox Code Playgroud)
但是,您可以将 Perl 用作外部过滤器,如 frabjous 所述。如果您的 Vim 是使用该+perl
功能编译的,您还可以使用 Perl 接口在 Vim 中执行 Perl 命令。看
:help if_perl.txt
Run Code Online (Sandbox Code Playgroud)
小智 10
您还可以使用:
/\v"your regex"
Run Code Online (Sandbox Code Playgroud)
代替:
/"your regex"
Run Code Online (Sandbox Code Playgroud)
小智 6
这是来自http://vim.wikia.com/wiki/Perl_known_regular_expressions的解决方案
:perldo s/(\w+)/\u$1/g
(用:ver
或+perl
进行+perl/dyn
验证。)
归档时间: |
|
查看次数: |
9456 次 |
最近记录: |