1. 安装ESS

有两种方法可以安装,一种是直接使用系统自带的包安装系统,比如yum

1
# yum install emacs-ess

但是,有时可能不是ESS最新版本。所以,推荐第二种方法,使用Emacs自带的包系统,方便、更新及时,设置方法参考,安装ess包。

2. 使用ESS

进入GNU Emacs界面之后,输入M-X R 即可进入R界面。在这个过程中,会询问是否在当前运行目录下运行R,可以选择在不同目录下运行。

  • M-x R
  1. 启动R。R运行的buffer因为是在Emacs编辑器下运行,所以称为inferior(Emacs文档中称之为iESS buffer)。

  2. C-u M-x R RET --no-save RET:启动R并且不保存。

  3. M-x ess-transcript-clean-region:清理R界面。

  4. C-c C-z:强制停止运行的R进程。

  • C-c C-x
  1. 代替ls()函数。

  2. C-c C-s:代替search()函数。

  3. C-c C-d:修改已经建立的对象,非常实用。

  • C-c C-n
  1. 把当前行送到R。

  2. C-c C-c:把当前段送到R。

  3. C-c C-b:把当前整个文件送到R。

  • C-c tab:自动补全R代码。

  • C-x o:滚动屏幕。

  • C--

  1. 自动给出R语言中特有的 <-

  2. C---:连按两下–,则可以显示下划线。

  • C-c C-o C-o
  1. 在函数头按下会激活ESS对R代码的注释功能。

  2. M-x customize-group RET ess RET:配置默认模板,如果需要插入空行,回车没用,猛戳空格。

  3. C-c C-o C-c:将代码注释为roxygen的##'开头格式,特别是注释example的时候很好用。

  4. C-c C-o p:光标跳转到注释段落开头。

  5. C-c C-o n:光标跳转到注释所在函数段落结尾。

  6. M-q:整理roxygen注释,将多行注释压缩整理。

a snap of Emacs ESS

3. 高级设置

结合Emacs的自动补全、补全括号、颜色显示等功能,设置更加强大的ESS编辑环境。将附加环境设置添加到Emacs设置文件,比如~/.emacs。所需要的包使用M-x list-package安装。

  • 自动补全:auto-complete

images

  • 代码折叠:hs-minor-mode(系统自带)

  • 括号补全:smartparens

  • 括号颜色:rainbow-delimiters

  • 颜色显示:rainbow-mode

images

附加内容

ESS的Emacs编程环境设置

Emacs configure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; auto-completion
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'auto-complete)
(require 'auto-complete-config)
(ac-config-default)

;;;;;;;;;;;;;;;;;;;;;;;
; ESS set
;;;;;;;;;;;;;;;;;;;;;;;
(require 'ess-site)
(setq ess-use-auto-complete t)

;;;;;;;;;;;;;;;;;;;;;;;;
;open hs-mode
;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'ess-mode-hook 'hs-minor-mode)

;;;;;;;;;;;;;;;;;;;;;
;smartparens
;;;;;;;;;;;;;;;;;;;;;
(require 'smartparens-config)
(show-smartparens-global-mode t)
(smartparens-global-mode t)

;;;;;;;;;;;;;;;;;;;;;
;rainbow mode 
;;;;;;;;;;;;;;;;;;;;;
(require 'rainbow-mode)
(dolist (hook '(ess-mode-hook inferior-ess-mode-hook))
(add-hook hook 'rainbow-turn-on))

;;;;;;;;;;;;;;
;rainbow-delimiters
;;;;;;;;;;;;;;
(require 'rainbow-delimiters)
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
(add-hook 'ess-mode-hook 'rainbow-delimiters-mode)

参考资料

更新记录

2017年1月6日

Comments