我经常这样做,无论在家还是工作中。
关键组件:
在守护程序模式下启动emacs:emacs --daemon &
。现在emacs是长时间运行的,并且由于与前端断开连接,因此是持久的。
使用tmux(或在我的情况下,围绕tmux的byobu包装器)以文本模式使用emacsclient -nw
进行连接。由于tmux是持久的,因此我可以随时连接、断开连接、重新连接…,同时具有来自byobu/tmux的多个选项卡、分割窗格。
当附近-在家庭桌面连接到家庭服务器或在工作中有多台服务器时-通过emacsclient -c
进行连接。现在我拥有标准的X11功能、绘图等。 这是我的默认'工作'模式。
但是,由于每个emacs会话都有一个R会话(或实际上在工作中有几个),因此我也可以通过ssh进入tmux/byobu会话。
另一个不错的功能是tramp-mode,它允许您在本地的Emacs缓冲区中编辑远程文件(可能由远程R会话使用),因为tramp包装ssh和scp,使远程文件看起来像本地文件。
最后但并非最不重要的是mosh在(Ubuntu)笔记本电脑上非常好用,因为它会在回到家或工作的本地网络时自动恢复会话。 在我的情况下,从Debian/Ubuntu到服务器和客户端的mosh;也可能适用于您的OS X。
简而言之,这个方法很棒,但可能需要额外的步骤将emacs与特定的tmux shell断开连接。守护程序模式是关键。其中一些会话持续了数周。
大约半个十年前开始我就这样工作了。可能更久了。但是使用ESS连接到远程Emacs会话要早得多——当我第一次在1990年代末看到它时,我认为ESS手册已经有了相关条目。
但是我觉得这更容易,因为它为我提供了“整个emacs”,包括我可能需要的其他缓冲区和会话。
编辑: 另外,我在家和工作中也使用RStudio(服务器),但通常出于所有常见原因而在Emacs中度过更多时间。
更多编辑: 回应@kjhealy,我补充说我也喜欢tramp-mode(通过ssh和scp的魔法在本地编辑远程文件)以及mosh(会话在我回到家或工作时自动恢复)。