我该如何使用Emacs ESS模式来编辑R markdown?

59
有没有一种方法可以配置Emacs,使其识别(并允许执行)R markdown(.Rmd)文件中的R代码块,类似于它识别.Rnw(Sweave)或.org(org-mode)文件中的代码块?
3个回答

38

Polymode正在开发中,它可以/将允许您编写带有R代码块的Markdown文档(用于使用knitr处理)。

设置polymode+rmarkdown的说明在README中。

尽管尚未完成,但仍在不断进展。请参见ess-help邮件列表上的这个讨论(gmane archive|mailing list archive)。


更新:Polymode已在MELPA发布,通过使用emacs现有的包机制简化了安装过程。在ESS邮件列表上此处查看公告。


24

github.com/vitoshka/polymode下载polymode的zip文件,或者如果你是“git guy”,也可以使用:

git clone https://github.com/vitoshka/polymode.git

将此函数添加到您的Emacs初始化文件中:

(defun rmd-mode ()
  "ESS Markdown mode for rmd files"
  (interactive)
  (setq load-path 
    (append (list "path/to/polymode/" "path/to/polymode/modes/")
        load-path))
  (require 'poly-R)
  (require 'poly-markdown)     
  (poly-markdown+r-mode))

如果您已经安装了ESS,请打开您的rmd文件并键入Meta-Xrmd-mode,然后欣赏Emacs的美丽。

MELPA用户更新

MELPA中的polymode使用平面文件结构。 当您通过M-x list-packages或类似设施从Emacs存储库安装时,您会直接将软件包文件放在正确的位置,即:(expand-file-name "~/.emacs.d/elpa"),因此请注释掉上面的load-path代码:

;;  (setq load-path 
;;      (append (list "path/to/polymode/" "path/to/polymode/modes/")
;;          load-path))

1
非常感谢您提供的代码。我想要提醒一下,这只有在 "path/to/" 文件夹中有 markdown-mode.el 才能正常工作(请参见链接)。 - giordano
2
当我从MELPA下载polymode时,它会被安装到我的Windows机器上的这个路径下:c:/emacs/.emacs.d/elpa/polymode-20150105.931/,但是我在其中没有看到modes文件夹!你有什么想法吗?如果你的回答中能涉及到Windows系统,我将非常感激。 - doctorate
1
我该如何在这个设置中执行R代码?我没有看到ESS菜单可以在Rmd和R缓冲区之间切换,执行代码等。 - Paul
2
@pavopax:ESS需要单独设置。一旦完成,M-x R启动R,并在块内使用C-c C-z切换到R控制台。 - antonio
1
关键是“在 R 代码块内”,而不仅仅是在缓冲区的任何地方。谢谢! - Paul
1
Polymode从git使用了平面结构。 - Parsa

20
其他答案已经有些过时了,现在polymode提供了一个专门用于处理.Rmd文件的软件包。只需使用来自MELPA的poly-R软件包,它在Github上的源码中可以找到。

以下内容可添加到您的init.el文件或使用use-package的任何位置:

(use-package poly-R
  :ensure t
  :pin melpa-stable)

如果需要更详细的用例,涉及修改默认按键映射,请参见此配置文档描述了默认按键映射。


1
这个方法可行。我通过MELPA安装了esspoly-R包,但是(对于我的Mac)我需要修改我的emacs exec-path才能使它们正常工作。 - Dave X

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接