这些符号在Emacs Lisp中意味着什么?

时间:2014-05-02 10:52:38

标签: emacs elisp

当我阅读一些elisp代码时,我发现了类似的内容:

(\,(* 2 \#1)) 

\,(format "%s %s id%d %s" \1 \2 (+1 \#) \3)

#'(bla bla)

符号如何" \,","#","#'"意思?我应该考虑哪种会议?

3 个答案:

答案 0 :(得分:10)

使用\,时,

query-replace-regexp在替换方面很特殊。这意味着“评估以下elisp表达式,并在替换中使用结果值”。

n.b。它在其他地方并不特别(我知道),所以这应该是你见过的用法。

\#在替换字符串中也很特殊,并且替换为到目前为止所做的替换次数。 (即递增的计数器)。

\#N(其中N是数字)是\N的变体,它将有问题的组视为数字而不是字符串,这在您评估的表达式需要时非常有用号。

所以(\,(* 2 \#1))将是一个替换,它会计算表达式(* 2 \#1),将正则表达式的第一组匹配的数字乘以2以产生一些值N,这样最终的替换为{{ 1}}。

您可以在手册中找到这些内容。

C-h i g (N) RET 然后搜索有问题的语法。例如 C-s (emacs),如果搜索失败(将会如此),则在重复的 C-s 中找到后续节点中的匹配项。

\,#'...的简称,它是(function ...) / '...的变体,表示引用的对象是函数。

由于这是elisp语法,您可以在elisp手册中找到它:

C-h i g (quote...) RET

你可以使用 Cs (elisp),或者在这种情况下它被索引,所以 I #' RET 的工作原理。

(通常首先检查索引,然后使用isearch。)

答案 1 :(得分:-1)

有关反引号的信息,请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html

#启动阅读器语法,例如#'是function的阅读器别名。 有关详细信息,请参阅http://definitelyaplug.b0.cx/post/emacs-reader/

答案 2 :(得分:-1)

#'是使用函数的简写,有关详细信息,请参阅此处:http://www.gnu.org/software/emacs/manual/html_node/elisp/Anonymous-Functions.html

反斜杠\有两个函数:它引用特殊字符(包括'\'),并引入了其他特殊结构。更多信息:https://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html#Regexps