如何在Emacs中注释代码块?


12

在Emacs中,如何注释文本块,即如何在n空白字符的右边向右缩进文本块,并##在每一行的开头放置一个选定的字符序列,例如?

原版的

foo
bar foobar
   foo bar

期望的:

# foo
# bar foobar
#    foo bar
  • 我需要一种不会干扰CUA模式的方法。
  • comment-dwin 不允许我选择任意字符序列。

Answers:


15

一种方法是使用string-rectangleC-x r t)。

标记该块,然后调用string-rectangle##作为字符串插入。


3
这里是一些更具体的步骤:1)将光标移到开头2)C-M-@3)将光标移到结尾4)C-x r t5)输入前缀字符序列,例如## ,按ENT
qazwsx 2012年

还有可能做逆运算吗?
mustISignUp

您可以选择一个矩形并将其删除,例如C-x R K
Juancho

10

根据您所运行的模式(例如CC模式,Lisp模式),您可以选择区域,然后使用命令comment-region(通常绑定到Cc Cc。如果一切设置正确,则文件类型应使用适当的注释字符)您正在编辑。


9
这有什么不同M-;
qazwsx 2012年

4
@duperuser M-;是更通用的注释命令。当没有活动区域时,它将插入注释(在该行的任何语句之后,并与注释列对齐)。选择区域后,其行为类似于comment-region。没有活动区域时,comment-region请勿插入注释。
jwernerny 2012年

不仅如此,而且comment-region,与comment-dwimM-;默认情况下)(与之不同),您可以灵活地嵌套和取消嵌套块注释。使用普通C-u嵌套嵌套一级嵌套。(我绑定C-x C-;comment-region。实际上,我绑定到comment-region-linesmisc-cmds.el。)
Drew

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.