我在激活主要模式“ Java / L Abbrev”的情况下使用emacs。当我键入M-x comment-region
或M-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
命令一个否定参数,以取消注释行。我该怎么做呢?或者,还有更好的方法?
答案 0 :(得分:3)
请尝试M-;
,默认情况下绑定到comment-dwim
。我认为这应该做您想要的。
答案 1 :(得分:1)
TLDR:使用C-- C-c C-c
;也就是说,在您的命令前加上“ control-hyphen”
要为命令提供否定参数,您需要调用negative-argument
或universal-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-end
和comment-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 k
(M-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/