注释是代码文件必不可少的一部分。为提高注释编辑效率,需要花一点点时间熟悉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)