首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在paredit中注释掉当前行?

如何在paredit中注释掉当前行?
EN

Stack Overflow用户
提问于 2012-11-03 22:19:28
回答 4查看 466关注 0票数 1

在我遇到paredit模式之前,我使用M-;注释掉当前行或者注释掉一个带有标记集的区域。

但在paredit模式下,我似乎无法注释掉当前行,除非我手动使用C-a并插入;或在I M-;之前标记该行,因为在这种模式下,在行首使用M-;将在该行上方插入;;;,而在行中或行尾将插入一行结束注释。

所以我的问题是如何以一种更优雅的方式注释掉当前行?

EN

回答 4

Stack Overflow用户

发布于 2014-07-16 21:17:24

我不认为paredit提供了注释掉一行的任何命令,所以我将分享一个无论是否使用paredit都有效的技巧。

假设你有这样的代码:

代码语言:javascript
复制
(defun my-hi ()
  (dotimes (_ 2)
    (print "hello")
    (print (+ 1
              2))
    (print "world"))
  (print "the end"))

如果要注释掉第三行,只需选择该表达式,然后按M-;键。也就是说,将指针移动到表达式(print "hello")之前的任何空格,然后按C-M-SPC选择该表达式,然后按M-;注释掉该表达式。

例如,如果您想注释掉两行,例如,您想注释掉跨越两行的表达式(print (+ 1 2))怎么办?同样,您可以将指针移动到表达式开头之前的任何空格,然后按C-M-SPC M-;键。

现在,如果您想注释掉包含表达式(print "world")的行,该怎么办?但这不是一个好主意。相反,您只需要注释掉表达式(print "world")。如何做到这一点?同样,它也是一样的。

如果您想注释掉循环中除第一个语句之外的所有语句,也就是如果您想注释掉(print (+ 1 2))(print "hello"),该怎么办?将指针移到要注释掉的第一个表达式的开头之前,然后按C-M-SPC 两次键以选择两个表达式,然后按M-;键。

选择表达式(相对于选择行)不仅更安全(因为不会引入不匹配的括号),而且更方便。例如,您如何注释掉dotime表单?使用C-M-SPC选择整个dotime表单比逐个选择5行更方便。

这个故事的寓意类似于Vim的以下寓意:“在Vim中,诀窍是使用文本对象(单词、行、句子、代码块等),而不是字母。”

在Lisp编辑中,诀窍是使用表达式(sexps),而不是使用行或字母。

为了方便起见,您可能希望定义一个命令,注释掉point后面的前N个表达式,其中N是由命令被连续调用的次数或前缀参数指定的。或注释掉一个紧跟在点之后的表达式并将点移动到下一个表达式的开始的命令。

票数 3
EN

Stack Overflow用户

发布于 2012-11-04 03:16:35

如果您确实想注释掉当前行,请在该行开头键入C-q;。

问题是,这几乎不是你想要的。

票数 1
EN

Stack Overflow用户

发布于 2013-06-14 02:20:52

只需输入;,就可以注释掉该行上从头到尾可以注释的所有内容。(后面的任何结束分隔符都将移到下一行。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13209999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档