Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/emacs/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 如何注释paredit中的当前行?_Emacs_Comments_Paredit - Fatal编程技术网

Emacs 如何注释paredit中的当前行?

Emacs 如何注释paredit中的当前行?,emacs,comments,paredit,Emacs,Comments,Paredit,我使用M-;在遇到paredit模式之前,注释掉当前行或注释掉带有标记集的区域 但在paredit模式下,似乎我无法注释掉当前行,除非我使用C-a和insert;在I M-之前手动或标记该行;因为在这种模式下使用M-;在行首插入;;;上面的线和中间或线的末尾将插入一行结束注释。 因此,我的问题是如何以更优雅的方式注释掉当前行?如果您确实想注释掉当前行,请键入C-q;在队伍的开始 问题是,这几乎不是你想要的。如果你真的想注释掉当前行,键入C-q;在队伍的开始 问题是,这几乎从来都不是你想要的;从一

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

但在paredit模式下,似乎我无法注释掉当前行,除非我使用C-a和insert;在I M-之前手动或标记该行;因为在这种模式下使用M-;在行首插入;;;上面的线和中间或线的末尾将插入一行结束注释。
因此,我的问题是如何以更优雅的方式注释掉当前行?

如果您确实想注释掉当前行,请键入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)

啊!我只是没意识到。谢谢啊!我只是没意识到。谢谢