【问题标题】:What is the short-cut key for commenting region in C++ mode in emacs?emacs中C++模式下注释区域的快捷键是什么?
【发布时间】:2014-06-20 02:07:06
【问题描述】:

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

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

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

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

我可以知道emacs的C ++模式中的键绑定是什么来做评论区(/*...*/)吗?我确实需要这种风格来编写源文件头区域等cmets(因为我公司有这种格式要符合)。

提前谢谢你。

【问题讨论】:

    标签: c++ emacs


    【解决方案1】:

    在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   " */")))
    

    【讨论】:

      【解决方案2】:

      您可以使用如下命令:

      (defun my-block-comment (start end)
        (interactive "r")
        (let ((comment-start "/* ")
              (commend-end " */")
              (comment-style 'aligned))
          (comment-region start end)))
      

      【讨论】:

        【解决方案3】:

        来自Emacs manual

        26.5.2 多行注释

        如果您正在输入评论并希望将其继续到另一行,请输入 M-jC-M-j (comment-indent-new-line)。这会中断当前行,并插入必要的注释分隔符和缩进以继续注释。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-17
          • 2013-05-16
          • 2022-01-05
          • 1970-01-01
          • 2018-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多