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

use*_*757 51 regex vim

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

Gia*_*ian 60

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

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

  • 没错,但就个人而言,IMO在开发人员的思维空间中已经存在太多碎片.PCRE几乎是一个"行业标准".我喜欢VIM的一个原因是它有多少选择.使用PCRE作为搜索/替换引擎至少应该被允许作为./configure标志 (31认同)
  • 它是一个开源产品.如果这对您来说是一个杀手锏,为什么不实施它并将其作为补丁提交?也许还有其他人会有同样的感受并从中受益. (8认同)
  • 想提一下这个vim技巧,用+ perl编译的vim执行perl搜索/替换:http://vim.wikia.com/wiki/Perl_compatible_regular_expressions (4认同)
  • @Bryan:Vim的正则表达式有很多PCRE中没有的功能 - 一切都以`\%`或`\\ _`开头. (2认同)
  • @Bryan:因为\ _s比[\ t \ r \ n]更容易。仍然有许多插件和功能依赖于vim regex语法,因此将其编译起来将非常棘手。(不可否认,如果您能正常工作,我会整天使用它...) (2认同)

Evg*_*eev 10

有一个名为eregex.vim的插件,它可以从PCRE转换为Vim的语法.它需要超过一千行的vim才能实现翻译!

  • "实现翻译需要超过一千行的vim!" 公平地说,(目前)其中279条是评论.:-)但仍然有803行(共1082行)的代码!非常强壮. (3认同)