注释是代码文件必不可少的一部分。为提高注释编辑效率,需要花一点点时间熟悉Emacs/ESS的相关内容并做一些方便设置。



1 注释/取消注释(Emacs)



命令

函数

动作

M-;

comment-dwim

在当前行插入或对齐注释;如果有激活选取,其作用则是注释或取消注释

C-u M-;

comment-kill

删除当前行的注释内容

C-x ;

comment-set-column

设置注释列

M-j

comment-multi-line

如果正在输入注释,其作用是插入新行并将其注释和对齐;如果不是则仅仅插入新行

C-M-j

同上

 

M-x comment-region

 

(无需解释)

C-c C-c

 

被ESS劫持为运行选区或当前行



2 相关命令的说明



  • 一般情况下,注释的对齐列由comment-column变量定义,但不同的编辑模式可能会有fancy-comment。在ESS中,由于ess-fancy-comments的作用会有以下表现:
  • 以 ### 开始的注释行对齐到第1列(前置空白符全部删除)
  • 以 ## 开始(前面的情况除外)的注释当成代码进行缩进处理(和代码对齐)
  • 以 # 开始(前面的情况除外)的注释缩进40列
  • 行首以 #! 开始的注释行(#前没有空白符)保留在原位置

可以通过修改ess-indent-line函数的代码进行自定义。

  • M-;命令使用时插入的注释符由comment-start变量确定,如果要改变注释风格,在.emacs文件中修改,如:



(add-hook 'ess-mode-hook (lambda () (setq comment-start "##-")))



  • M-;注释选定代码行时只考虑以注释符开头的代码行,注释符不在首列则当成代码行处理。
  • comment-padding变量设定注释符和注释内容之间的分隔符号,默认为一个空格。当然也可以修改,方法同上。
  • M-j命令的表现方式由comment-multi-line变量确定
  • comment-indent-function



3 自定义代码分隔线的快捷输入



提高代码可读性的方法之一是多使用空行。但空行的作用不是很醒目,最好能使用类似于分隔线之类的东西。使用Emacs的自定义函数功能很容易实现这个功能:



(defun insert-break-line()
  "Insert a break line at cursor point."
  (interactive)
  (insert "## =======================================================")
  (eval(newline-and-indent))
  (insert "## "))
(define-key ess-mode-map (kbd "C-M-j") 'insert-break-line)






Author: ZGUANG@LZU

Created: 2014-04-07 一 19:12