大家都用的哪种正则?

我在 Spacemacs 中用的 vim-style,但是发现 vim 正则(用:激活的那个)效率不高,2万行左右的词库进行批量替换就足以把 Emacs 卡死了。

replace-regexp 就没问题,同样的数据量在我的机子上 2s 完成。

然而两种正则的风格略有不同,特别是网上一些现成的(我用过的)模板更多是用 vim,我也更熟悉一点。

各位用哪个更多?或是用 Perl 等其他工具?

私以为 Emacs 的正则对于文本编辑器来说,仅仅是够用而已。当然,Emacs 众会说:Emacs 可不仅仅是文本编辑器!这,,可就没办法了。

我用 SNOBOL,从文本替换程序直接生成汇编程序。

* replace foo to bar
LOOP LINE = INPUT
     LINE 'foo' = 'bar'
     OUTPUT = LINE   :(LOOP)
END

把一个 feature 跟一个函数比,有失公平。

当你 :%s/ 输入 pattern 的每一个字符,evil 都会整个 buffer 查找一遍,并把符合的项高亮标记起来。 当你继续输入 replacement 的每一个字符时,evil 又一遍遍把预览效果画出来。 所以,大文件可能主要消耗在这里。 最后回车的时候,vim-regexp 也是要转成 emacs-regexp 执行的。 相关函数:evil-transform-vim-style-regexp

直接 replace-regexp 就是一步到底了,不需要做各种效果。

5 个赞

我觉得就原生的

replace-regexp

结合

regexp-builder

就够用了