在emacs中c++模式下注释区域的快捷键是什么?



在C模式下,我方便地使用M-;/* */样式注释区域。

/* Program: Foo                  */
/* Author:  Jando                */
/* Date:    19/06/2014           */
/* ...                           */

现在我来到c++模式,却发现M-;只能用//做注释行样式。

// Only
// Comment Line
// is
// available here

请问emacs在c++模式下做注释区(/*...*/)的键绑定是什么?我确实需要这种风格来编写注释,比如源文件头区域(因为我的公司需要遵循这种格式)。

提前感谢。

在c++模式下,变量comment-startcomment-end的值分别为"// """,在C模式下分别为"/* "" */"

因此,您可以更改局部变量以获得与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-jC-M-j (comment-indent-new-line)。这将中断当前行,并插入必要的注释分隔符和缩进以继续注释。

对于带有结束注释分隔符的语言(例如C中的*/), M-j的确切行为取决于变量comment-multi-line的值。如果该值为nil,则关闭旧行的注释,并在新行上开始新的注释。否则,它将在当前注释分隔符内打开一个新行。

最新更新