当我阅读一些elisp代码时,我发现了类似的内容:
(\,(* 2 \#1))
\,(format "%s %s id%d %s" \1 \2 (+1 \#) \3)
#'(bla bla)
符号如何" \,","#","#'"意思?我应该考虑哪种会议?
答案 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