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

sea*_*avi 3 emacs session r ess tmux

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

Dir*_*tel 10

我一直这样做.在家里和工作.

关键零件:

  1. 以守护进程模式启动emacs : emacs --daemon &. 现在,emacs长时间运行且持久,因为它与前端断开连接.

  2. emacsclient -nw使用tmux在文本模式下连接(或者在我的情况下,使用tmux周围的byobu包装器).由于tmux仍然存在,我可以随意连接,断开连接,重新连接,...同时具有多个选项卡,拆分窗格,...来自byobu/tmux.

  3. 当附近 - 家庭桌面连接到家庭服务器,或与多个服务器一起工作 - 连接通过emacsclient -c.现在我有标准的X11优点,绘图等pp.这是我默认的"工作"模式.

  4. 但是因为每个emacs会话都有一个R会话(实际上是几个,特别是在工作中),我实际上可以找到它们,因为我也可以进入tmux/byobu会话.

  5. 另一个不错的功能是tramp-mode,允许您在本地Emacs缓冲区中编辑远程文件(可能由远程R会话使用),因为tramp包装ssh和scp使远程文件显示为本地.

  6. 最后但并非最不重要的是,(Ubuntu)笔记本电脑上的mosh非常好,因为当我回到家中或工作的本地网络时,它会自动恢复会话.在我的案例中,来自Debian/Ubuntu的mosh服务器和客户端; 也可能适合OS X的人.

简而言之,它就像一个梦想,但可能需要额外的步骤,即从您启动的特定tmux shell中"断开"emacs.守护进程模式是关键.其中一些会议持续数周.

大概五年前,我开始这样做.可能更长.但是使用ESS连接到远程Emacs会话的时间要长得多 - 我认为当我在20世纪90年代末第一次看到它时,ESS手册已经有了它的条目.

但我发现这更容易,因为它给了我"整个emacs",包括我可能需要的任何其他缓冲区和会话.

编辑:简单来说,我也在家里和工作中使用RStudio(服务器),但由于所有常见原因,通常在Emacs上花费更多时间.

更多编辑:@kjhealy的后续中我添加了我也是tramp-mode(在Emacs本地编辑远程文件,因为ssh和scp的魔法)以及mosh(在魔术上恢复时的会话)的粉丝我上班或回家).