为什么VIM有自己的正则表达式语法?

时间:2010-08-30 22:10:58

标签: regex vim

为什么你必须使你的正则表达“非常神奇”,这样你就不必逃避捕获引号?如果您将环境设置为非常神奇,那么您就是非标准环境,并且可能存在合规性问题。我只是想知道为什么vim使用与perl不同的正则表达式语法?

3 个答案:

答案 0 :(得分:60)

大多数vi(以及vim)功能都来自ed。 vi和ed都比perl早了至少十年或两年。一个更好的问题可能是“为什么Perl不使用与vi相同的正则表达式语法?”。

当然,人们也可以争辩说,人们希望在文本编辑器中编写执行常见任务的正则表达式可能与您希望在编程语言中编写的正则表达式完全不同。

答案 1 :(得分:9)

有一个名为eregex.vim的插件,它可以从PCRE转换为Vim的语法。需要over a thousand lines of vim to achieve that translation

答案 2 :(得分:1)

除了上述原因之外,例如,在进行正则表达式时,vim的袖子中还包含一些卡片,以匹配我们背后的积极眼光:

:%s/^foo \zsbar/moo/g

以上命令将以“ foo”开头的行中的“ bar”替换为“ moo”。

通过\zs可以更容易地设置正向后看,而\ze可以更容易地进行正向看待。

我们还提供了一种仅在“可视区域”中进行匹配的方法-> \%V

:'<,'>s/\%Vthis/that/g

尽管使用全局标志“ g”,但替换操作仅限于视觉\%V

要阅读有关vim正则表达式的惊人文章,请访问以下链接:https://bitbucket.org/snippets/sergio/7nzqxx

我们也可以在vim替换中使用一些“子匹配”技巧 https://dev.to/voyeg3r/vim-math-on-vim-substitution-4obo