如何在ESS/Emacs中设置R流程?

Con*_*nor 26 emacs r ess

当我启动R环境时,我经常运行很长的R脚本.我希望能够在Emacs/ESS中加载/运行R脚本,并继续在另一个缓冲区中工作.

当我按下Cg或Cc Cc时,进程被中断,我必须重新启动脚本.

在ESS/Emacs中设置R流程的最佳方法是什么?

编辑:感谢您的回答和评论,但没有一个解决了当您加载/运行大型脚本并且无法更改缓冲区时Emacs冻结的事实.

我想我的问题更为笼统 - Emacs可以为您提供一个让您继续工作的流程吗?

Vit*_*hKa 20

ESS将R作为异步进程运行.你不需要背景任何东西.您可以运行几个小时的代码,并且仍然可以在ESS中不间断地工作.

你的问题似乎是另一回事.当您执行脚本时,您可以"明显地"执行它,即您执行的代码将打印到终端.这导致Emacs冻结.

设置ess-eval-visibly为nil,大量的代码将立即发送给R:

(setq ess-eval-visibly nil)
Run Code Online (Sandbox Code Playgroud)

干杯.

[更新]

ess-eval-visibply在最新版本的ESS中有一个新设置- 'nowait.它将您的代码放在较差的缓冲区中,然后将其发送到子进程.通过这种方式,您可以在不等待子进程完成的情况下查看代码和所有输出.

[/更新]