在C模式下,我方便地使用M-;用/* */
样式注释区域。
/* Program: Foo */
/* Author: Jando */
/* Date: 19/06/2014 */
/* ... */
现在我来到c++模式,却发现M-;只能用//
做注释行样式。
// Only
// Comment Line
// is
// available here
请问emacs在c++模式下做注释区(/*...*/
)的键绑定是什么?我确实需要这种风格来编写注释,比如源文件头区域(因为我的公司需要遵循这种格式)。
提前感谢。
在c++模式下,变量comment-start
和comment-end
的值分别为"// "
和""
,在C模式下分别为"/* "
和" */"
。
(set (make-local-variable 'comment-start) "/* ")
(set (make-local-variable 'comment-end) " */")
你可以把它添加到你的.emacs
文件,
(defun my-c++-mode-hook ()
(c-set-style "stroustrup")
(set (make-local-variable 'comment-start) "/* ")
(set (make-local-variable 'comment-end) " */"))
(add-hook 'c++-mode-hook 'my-c++-mode-hook)
或只是:
(add-hook 'c++-mode-hook (lambda () (setq comment-start "/* "
comment-end " */")))
您可以使用如下命令:
(defun my-block-comment (start end)
(interactive "r")
(let ((comment-start "/* ")
(commend-end " */")
(comment-style 'aligned))
(comment-region start end)))
来自Emacs手册:
26.5.2多行注释
如果您正在键入注释并希望将其继续到另一行,则键入M-j或C-M-j (
comment-indent-new-line
)。这将中断当前行,并插入必要的注释分隔符和缩进以继续注释。对于带有结束注释分隔符的语言(例如C中的
*/
), M-j的确切行为取决于变量comment-multi-line
的值。如果该值为nil
,则关闭旧行的注释,并在新行上开始新的注释。否则,它将在当前注释分隔符内打开一个新行。