emacs上的lisp:如何注释多行表达式?
例如,如果我想对此进行评论:emacs上的lisp:如何注释多行表达式?,emacs,lisp,comments,Emacs,Lisp,Comments,例如,如果我想对此进行评论: (defun noop () nil) 每次我试着在“(defun)”前面加一个分号,defun就会跑到下一行。那该怎么做呢 GNU Emacs 23.1.1 编辑:我所说的“逃跑”是指当我在“(defun)”之前插入分号时,分号和“(defun”之后会自动插入一个换行符再次从新行开始。查看命令M-x comment region和相关命令。标记两行并调用M-x comment region。同时查看comment或uncomment region和comme
(defun noop ()
nil)
每次我试着在“(defun)”前面加一个分号,defun就会跑到下一行。那该怎么做呢
GNU Emacs 23.1.1
编辑:我所说的“逃跑”是指当我在“(defun)”之前插入分号时,分号和“(defun”之后会自动插入一个换行符再次从新行开始。查看命令M-x comment region和相关命令。标记两行并调用
M-x comment region
。同时查看comment或uncomment region
和comment dwim
函数。M-x comment dwim
或M-;
,这是前者的默认键绑定-可能会为您节省一些笔划,因为它不仅会注释,而且会取消注释区域(如果已经注释)。无论如何,请查看正确的描述。Ron,执行CTRL-H m
并查看次要模式。您有一些“有用”的次要模式处于活动状态。(可能paredit
但我认为不是这样。)我记得当我尝试EMACS入门套件时,有过类似的情况。它持续了大约30秒,然后我尖叫着找到了如何杀死它的方法
在任何情况下,这都不是默认的EMACS行为,而是一些init文件或站点EMACS的添加。如果您谈论的是Common Lisp(而不是EMACS Lisp),您可以使用
+(or)
:
有关详细信息,请参见。对于您在标题中要求的特定任务(对可能同时跨多行的完整表达式进行注释),首先按
C-M-SPC
(绑定到标记sexp
)将区域设置为表达式的下一点,然后按M-;
(绑定到comment dwim
,它将调用comment region
)。但是,到派对有点晚了,那么:
(defmacro comment (&rest a))
这对我来说很有效,这里没有逃逸。你是说当你在“(defun)”之前插入分号时,在它之后会自动插入一个换行符,并且“(defun”在新行上再次开始?这会很奇怪;这在我的emacs版本(GNU emacs 22.1和基于GNU emacs 22.3.1的Aquamacs emacs)中都没有发生是的,事情是这样的。GNU Emacs 23.1.1。你很可能已经安装了paredit。那么它是什么模式呢?键入
C-h k;
,Emacs会告诉你绑定了哪个命令分号,以及哪个库定义了它。从那里你应该可以知道你需要禁用什么。不幸的是,在我的Emacs M-x注释dwim i上N在行尾插入分号M-;插入三个分号和一个换行符。虽然需要几年的时间才能捕捉到这些宏解决方案,但这些宏解决方案不会非常有用,因为BODY仍需要无误地进行计算。
(defmacro comment (&rest a))