如何取消注释emacs中的代码块

时间:2018-08-08 17:50:11

标签: emacs comments

我在激活主要模式“ Java / L Abbrev”的情况下使用emacs。当我键入M-x comment-regionM-x uncomment-region时,所需的效果会在编辑器中发生。但是我已经厌倦了每次都键入此内容。

我发现我可以输入C-c C-c并注释一个区域。我想找到一种取消区域注释的类似方法。我转到emacs文档:

https://www.gnu.org/software/emacs/manual/html_node/ccmode/Comment-Commands.html

它表示给C-c C-c命令一个否定参数,以取​​消注释行。我该怎么做呢?或者,还有更好的方法?

6 个答案:

答案 0 :(得分:3)

请尝试M-;,默认情况下绑定到comment-dwim。我认为这应该做您想要的。

答案 1 :(得分:1)

TLDR:使用C-- C-c C-c;也就是说,在您的命令前加上“ control-hyphen”

要为命令提供否定参数,您需要调用negative-argumentuniversal-argument命令,并提供否定参数。 (请尝试C-h f,以获取有关这些的更多信息。)

negative-argument命令绑定到键C--M--C-M--,因此所有这些键都将用作前缀。通常,对于任何给定的命令,您都会使用最方便键入的命令。

universal-argument命令绑定到C-u并在此之后立即接受其参数,因此您也可以执行C-u -,并可以选择后面跟零个或多个数字(例如{{1 }});那个在这里过大了,但是很了解。

最后,here是Emacs手册中讨论该主题的部分。

答案 2 :(得分:1)

您的问题是如何使用C-c C-c取消对该区域的注释。

@AaronHarris回答了您有关使用负前缀arg的问题。

但是我认为您误读了comment-region的文档(该CC模式绑定到C-c C-)。它不会取消对该区域的注释。删除一定数量的注释字符。

要取消注释该区域,请使用C-u-一个简单的前缀arg(无明确数字)以取消注释该区域。 C-h f comment-region说:

  

comment-region是一个交互式编译的Lisp函数,位于   newcomment.el

     

它绑定到菜单栏编辑区域的注释区域。

     

(comment-region BEG END &optional ARG)

     

注释或取消注释区域中的每一行。

     

仅使用C-u前缀arg,取消注释区域BEG .. END中的每一行。

     

数字前缀ARG表示使用ARG注释字符。

     

如果ARG为负,则删除那么多注释字符。

     

用作注释开始的字符串是从comment-start构建的   和comment-padding;构建用作注释结尾的字符串   来自comment-endcomment-padding

     

默认情况下,comment-start标记插入到   该区域的当前缩进,并且注释于终止   每行(甚至对于换行不以   注释和空白行没有注释)。这可以是   更改为comment-style

因此答案是使用 C-u C-c C-c

FWIW,comment-region在评论和取消评论该区域方面比M-;comment-dwim)好得多。它使您可以嵌套和取消嵌套任何级别的注释。

答案 3 :(得分:1)

comment-dwim(DWIM 代表“Do What I Mean”)默认绑定到 M-; 并且根据区域是否处于活动状态(有时您处于什么模式)而有不同的工作方式)

来自 comment-dwim 的 emacs 帮助页面:

comment-dwim is an interactive compiled Lisp function in
‘newcomment.el’.

It is bound to M-;.

(comment-dwim ARG)

Call the comment command you want (Do What I Mean).
If the region is active and ‘transient-mark-mode’ is on, call
‘comment-region’ (unless it only consists of comments, in which
case it calls ‘uncomment-region’).
Else, if the current line is empty, call ‘comment-insert-comment-function’
if it is defined, otherwise insert a comment and indent it.
Else if a prefix ARG is specified, call ‘comment-kill’.
Else, call ‘comment-indent’.
You can configure ‘comment-style’ to change the way regions are commented.

答案 4 :(得分:0)

为什么不将uncomment-region命令映射到键?并不是您真正要的(以前的答案对此更好),但是它是一种每次停止输入M-x uncomment-region的方法

像这样(具有所需的键绑定)

(global-set-key (kbd "C-c C-u") 'uncomment-region)

有关键绑定的文档可以在这里找到:
Commands for Binding Keys
Customizing Key Bindings

以下是命令图:
Map of command

您可以使用C-h kM-x describe-key)来显示绑定到特定键的命令(因此请确保不要擦除它)和C-h f({{1} })将向您显示该功能及其绑定的说明。

答案 5 :(得分:-1)

  • 首先选择地区

  • 要评论,请使用

    ALT + x 评论区域

  • 要取消注释,请使用

    ALT + x 取消注释区域

信用:https://www.reddit.com/r/emacs/comments/1kklgl/command_to_uncomment_entire_comment_block/