ESS/Emacs 中长 运行 远程 R 会话的状态是什么?

What is the status of long-running remote R sessions in ESS/Emacs?

我经常 运行 远程 R 并且在 RStudio 服务器上取得了巨大的成功。但是,在许多情况下,Emacs/ESS 仍然更可取,特别是因为我经常同时处理多个项目。当在 emacs 中 运行ning ESS/R 预期连接会中断时,最先进的技术是什么?更具体地说,我喜欢在 Emacs 中 运行 一个 tmux 会话,这样我就可以在 tmux(或屏幕)中连接到一个长 运行ning R 会话 运行ning。 ESS/Emacs 支持这种场景的状态是什么?这似乎随​​着时间的推移而改变,我还没有找到 "definitive" 方法(也许没有)。

我一直这样做。既在家,又在工作。

关键组件:

  1. 以守护进程模式启动 emacs:emacs --daemon &。现在 emacs 是 long-running 并且持久存在,因为它与 front-end.

  2. 断开连接
  3. 使用 emacsclient -nw 在文本模式下使用 tmux(或者在我的例子中,是 tmux 周围的 byobu 包装器)进行连接。随着 tmux 的持续存在,我可以随意连接、断开连接、重新连接……同时有多个选项卡、拆分窗格……来自 byobu/tmux.

  4. 在附近时——在家庭桌面上连接到家庭服务器,或者在使用多个服务器时——通过emacsclient -c连接。现在我有了标准的 X11 优点,绘图等 pp。这是我的默认 'working' 模式。

  5. 但是因为每个 emacs session 都有一个 R session(或者实际上是几个,特别是在工作中)我实际上可以找到它们,因为我可以通过 ssh 进入 tmux/byobu session 也是。

  6. 另一个不错的功能是 tramp-mode 允许您在本地 Emacs 缓冲区中编辑远程文件(可能由远程 R session 使用),因为 tramp 环绕 ssh 和scp 使远程文件出现在本地。

  7. 最后但并非最不重要的一点是,mosh 在 (Ubuntu) 笔记本电脑上非常好,因为当我回到家中或工作的本地网络时,它会自动恢复 sessions .在我的例子中,服务器和客户端上来自 Debian/Ubuntu 的 mosh;也可能对你有用 OS X folks.

简而言之,就像做梦一样工作,但可能需要额外的步骤 "disconnecting" emacs 来自您启动的特定 tmux shell。守护进程模式是关键。其中一些 session 运行 持续数周。

我大概五年前就开始这样工作了。可能更长。但是使用 ESS 连接到远程 Emacs session 的时间要早​​得多——我认为当我在 1990 年代后期第一次看到 ESS 手册时,它已经有了相关条目。

但我发现这更容易,因为它给了我 "the whole emacs" 包括我可能需要的任何其他缓冲区和 session。

编辑: 简而言之,我在家里和工作中也使用 RStudio(服务器),但出于所有常见原因,我通常会花更多时间在 Emacs 上。

更多编辑: 在 follow-up 到 @kjhealy 我补充说我也是两者的粉丝 tramp-mode (在本地编辑远程文件在 Emacs 中感谢 ssh 和 scp 的魔力)以及 mosh(sessions 在我上班或回家时神奇地恢复)。