Emacs 如何注释paredit中的当前行?
我使用M-;在遇到paredit模式之前,注释掉当前行或注释掉带有标记集的区域 但在paredit模式下,似乎我无法注释掉当前行,除非我使用C-a和insert;在I M-之前手动或标记该行;因为在这种模式下使用M-;在行首插入;;;上面的线和中间或线的末尾将插入一行结束注释。Emacs 如何注释paredit中的当前行?,emacs,comments,paredit,Emacs,Comments,Paredit,我使用M-;在遇到paredit模式之前,注释掉当前行或注释掉带有标记集的区域 但在paredit模式下,似乎我无法注释掉当前行,除非我使用C-a和insert;在I M-之前手动或标记该行;因为在这种模式下使用M-;在行首插入;;;上面的线和中间或线的末尾将插入一行结束注释。 因此,我的问题是如何以更优雅的方式注释掉当前行?如果您确实想注释掉当前行,请键入C-q;在队伍的开始 问题是,这几乎不是你想要的。如果你真的想注释掉当前行,键入C-q;在队伍的开始 问题是,这几乎从来都不是你想要的;从一
因此,我的问题是如何以更优雅的方式注释掉当前行?如果您确实想注释掉当前行,请键入C-q;在队伍的开始
问题是,这几乎不是你想要的。如果你真的想注释掉当前行,键入C-q;在队伍的开始
问题是,这几乎从来都不是你想要的;从一开始就注释掉行中可以注释的所有内容。以下任何结束分隔符都将移动到下一行。只需键入;从一开始就注释掉行中可以注释的所有内容。以下任何结束分隔符都将移动到下一行。我认为paredit没有提供任何注释行的命令,因此我将分享一个无论是否使用paredit都有效的提示 假设您有以下代码:
(defun my-hi ()
(dotimes (_ 2)
(print "hello")
(print (+ 1
2))
(print "world"))
(print "the end"))
如果要注释掉第三行,只需选择表达式,然后按M-;。也就是说,将点移动到表达式print hello之前的任何空白处,然后按C-M-SPC选择表达式,然后按M-;注释掉这个表达式
如果要注释掉两行,例如,如果要注释掉跨越两行的表达式print+12,该怎么办?同样,将点移动到表达式开头之前的任何空白处,然后按C-M-SPC M-
现在,如果要注释掉包含表达式print world的行,该怎么办?但这是个坏主意。相反,您只想注释掉表达式打印世界。怎么做?还是一样的
如果要注释掉循环中除第一条语句之外的所有语句,即如果要注释掉print+1 2和print hello,该怎么办?将点移到要注释掉的第一个表达式的开头之前,然后按C-M-SPC两次以选择这两个表达式,然后按M-
选择表达式而不是选择行不仅在不引入不匹配参数的意义上更安全,而且更方便。例如,您将如何注释dotimes表单?使用C-M-SPC选择整个dotimes表单比逐个选择五行更方便
这里的故事寓意类似于Vim的以下寓意:在Vim中,技巧是使用文本对象单词、行、句子、代码块等,而不是字母
在Lisp编辑中,诀窍是使用表达式sexps,而不是行或字母
为了使操作更加方便,您可能需要定义一个命令,该命令可以注释掉以下点的前N个表达式,其中N由命令连续调用的次数或前缀参数指定。或者一个命令,它注释掉一个表达式后面的一个点,并将该点移动到下一个表达式的开始处(如果有)。我认为paredit没有提供任何注释掉一行的命令,因此我将分享一个技巧,无论是否使用paredit,该技巧都有效 假设您有以下代码:
(defun my-hi ()
(dotimes (_ 2)
(print "hello")
(print (+ 1
2))
(print "world"))
(print "the end"))
如果要注释掉第三行,只需选择表达式,然后按M-;。也就是说,将点移动到表达式print hello之前的任何空白处,然后按C-M-SPC选择表达式,然后按M-;注释掉这个表达式
如果要注释掉两行,例如,如果要注释掉跨越两行的表达式print+12,该怎么办?同样,将点移动到表达式开头之前的任何空白处,然后按C-M-SPC M-
现在,如果要注释掉包含表达式print world的行,该怎么办?但这是个坏主意。相反,您只想注释掉表达式打印世界。怎么做?还是一样的
如果要注释掉循环中除第一条语句之外的所有语句,即如果要注释掉print+1 2和print hello,该怎么办?将点移到要注释掉的第一个表达式的开头之前,然后按C-M-SPC两次以选择这两个表达式,然后按M-
选择表达式而不是选择行不仅在不引入不匹配参数的意义上更安全,而且更方便。例如,您将如何注释dotimes表单?使用C-M-SPC选择整个dotimes表单比逐个选择五行更方便
e
这里的故事寓意类似于Vim的以下寓意:在Vim中,技巧是使用文本对象单词、行、句子、代码块等,而不是字母
在Lisp编辑中,诀窍是使用表达式sexps,而不是行或字母
为了使操作更加方便,您可能需要定义一个命令,该命令可以注释掉以下点的前N个表达式,其中N由命令连续调用的次数或前缀参数指定。或者一个命令,该命令注释掉一个表达式后面的一个点,并将该点移动到下一个表达式的开头(如果有)。如果试图注释空行或一个表达式的结尾,请使用;将光标放在指定的位置;应该是。当注释代码时,应该考虑注释S表达式而不是线。这样可以保持括号的平衡。Paredit为此提供了一个有用的接口 第二;键可以用于较低级别的表单,它们将由paredit自动平衡,尽管我发现它更难看:光标是|但不是|或| 变成:
(foo (bar ; baz
) quuz)
但是
产生一个错误
如果安装了SLIME,则可以使用SLIME插入平衡注释,这将在保持平衡括号的同时愉快地插入注释。此注释恰好是使用|和|的读取宏。永远欢迎来到C-q;但这将使它们变得不平衡。paredit的全部目的是保持它们的平衡
(|defun (blah) blah) -> #|(defun (blah) blah)|#
它注释出了可能的最低级别表格:
(foo (bar | fuux) duux) -> (foo #|(bar | fuux)|# duux)
我的.emacs.el文件中有这个,因为默认情况下slime insert balanced comments没有绑定到键
(global-set-key (kbd "C-c ;") 'slime-insert-balanced-comments)
如果试图评论一个空行或一个只使用结束;将光标放在指定的位置;应该是。当注释代码时,应该考虑注释S表达式而不是线。这样可以保持括号的平衡。Paredit为此提供了一个有用的接口 第二;键可以用于较低级别的表单,它们将由paredit自动平衡,尽管我发现它更难看:光标是|但不是|或| 变成:
(foo (bar ; baz
) quuz)
但是
产生一个错误
如果安装了SLIME,则可以使用SLIME插入平衡注释,这将在保持平衡括号的同时愉快地插入注释。此注释恰好是使用|和|的读取宏。永远欢迎来到C-q;但这将使它们变得不平衡。paredit的全部目的是保持它们的平衡
(|defun (blah) blah) -> #|(defun (blah) blah)|#
它注释出了可能的最低级别表格:
(foo (bar | fuux) duux) -> (foo #|(bar | fuux)|# duux)
我的.emacs.el文件中有这个,因为默认情况下slime insert balanced comments没有绑定到键
(global-set-key (kbd "C-c ;") 'slime-insert-balanced-comments)
啊!我只是没意识到。谢谢啊!我只是没意识到。谢谢