Emacs建议使用search-forward-regexp vs re-search-forward?

时间:2016-04-22 15:32:33

标签: regex emacs

根据this previous SO post,Emacs有两个名称(re-search-forward,search-forward-regexp)用于相同的代码功能(重新搜索转发)。

就我所见,Emacs doc仅提及重新搜索前进。

我应该使用首选/推荐的表格吗? (其中一个名称是否已被弃用?)我个人认为search-forward-regexp更具信息性,因为它在名称中明确且明确地具有-regexp(相对于更短且更不透明的" re - ")。但是如果可能的话,我想保持建议练习的一面。

另一种问这个问题的方法是"为什么emacs开发人员会在代码中而不是在doc中放置别名search-forward-regexp? (也许别名表示"更好"名称,因为也许这些别名是在重新搜索前的原件之后出现的?)

3 个答案:

答案 0 :(得分:1)

这完全取决于你想要的行为,正如你所指出的Q& A所解释的那样。

通过在构建Emacs时将search-forward-regexp别名化为re-search-forward的定义,如果用户或库稍后更改re-search-forward的定义,那么search-forward-regexp将不会自动受到这种变化的影响。这样,用户可以修改其中一个,而无需修改另一个。 IOW,它为用户提供了更大的灵活性。 (没有什么能阻止某人以同样的方式进行修改,甚至不能将search-forward-regexp重新别名到符号re-search-forward或后来的定义。

两者之间没有首选的形式。定义别名的代码中的此注释告诉您,两者都不被弃用:

;; Alternate names for functions - these are not being phased out.
(defalias 'search-forward-regexp (symbol-function 're-search-forward))

您对名称的观察可能是别名的背后。两者都已经存在了很长时间 - 至少可以追溯到Emacs 20。

答案 1 :(得分:0)

我的印象是search-forward-regexp用作交互式使用的名称,而re-search-forward通常用于Elisp代码。

我高兴地宣布search-forward-regexp已经过时了,但这不是一场真正值得战斗的战斗之一。

答案 2 :(得分:0)

对于大多数Emacs用户来说,使用“re-”意味着正则表达式是常见的,但对于初学者来说,这一点并不常见。非程序员。别名更冗长,可能会有所帮助。

相关问题