Answers:
您可以使用!通过vim中的外部命令过滤任何行或行范围。例如,您可以执行以下操作:
:.!perl -pe "s/(\w+)/\u\1/g"
这将通过该perl命令过滤当前行。(这里:
进入命令行模式,.
后面的表示当前行;您还可以指定行范围或%
整个文件等)。
如果要使用vim的内置替换模式,则最接近的是使用vim的“非常魔术”选项\ v,如下所示:
:s/\v(\w+)/\u\1/g
请参阅:help pattern
和:help substitute
了解更多信息。我不认为“非常魔术”与perl的模式完全相同,但是非常接近。无论如何,如上所述,如果您更喜欢perl,则可以始终使用它本身。
(
会被特殊对待{
:“除'0'-'9','a'-'z','A'-'Z'和' “ _”具有特殊含义。” 谢谢!
不,您不能以这种方式使用Perl正则表达式。有关学习Perl正则表达式组件的Vim等效项的帮助,请参见
:help perl-patterns
但是,您可以将Perl用作外部过滤器,如frabjous所述。如果您的Vim是使用该+perl
功能编译的,则还可以使用Perl接口在Vim中执行Perl命令。看到
:help if_perl.txt
:help perl-patterns
解决了我以前讨厌vim的一件事
您还可以使用:
/\v"your regex"
代替:
/"your regex"
nnoremap / /\v
和vnoremap / /\v
来帮助自己,以便在键入/
时起作用。
这是来自http://vim.wikia.com/wiki/Perl_compatible_regular_expressions的解决方案
:perldo s/(\w+)/\u$1/g
(:ver
对此进行验证+perl
或+perl/dyn
在其中进行编译。)
使用eregex.vim插件。这非常有用,我也没有遇到任何问题。