【问题标题】:What do these symbols mean in Emacs Lisp?这些符号在 Emacs Lisp 中是什么意思?
【发布时间】:2014-05-02 19:33:05
【问题描述】:

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

(\,(* 2 \#1)) 

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

#'(bla bla)

像“\”、“#”、“#'”这样的符号是什么意思?对于这类事情,我应该查看哪个会话?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    \, 在使用 query-replace-regexp 时特别适合替换。它的意思是“计算下面的 elisp 表达式,并在替换中使用结果值”。

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

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

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

    因此,(\,(* 2 \#1)) 将是一个替换,它评估表达式 (* 2 \#1),将与正则表达式的第一组匹配的数字乘以 2 以产生某个值 N,这样最终的替换是 (N)

    您可以在手册中找到这些详细信息。

    C-hig (emacs) RET 然后搜索有问题的语法。例如C-s \, 重复 C-s 如果搜索失败(因为它会)在后续节点中找到匹配项。

    #'...(function ...) 的简写,它是 '... / (quote...) 的变体,表示引用的对象是一个函数。

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

    C-hig (elisp) RET

    你可以使用 C-s #' 或者在这种情况下它被索引,所以 I #' RET 也可以。

    (一般先查索引,再用isearch。)

    【讨论】:

      【解决方案2】:

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

      # 启动阅读器语法,例如 #' 是 function 的阅读器别名。 欲了解更多信息,请参阅http://definitelyaplug.b0.cx/post/emacs-reader/

      【讨论】:

        【解决方案3】:

        #' 是使用函数的简写,更多详情请看这里: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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-13
          • 2011-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多