分离并重新连接到Emacs服务器

分离并重新连接到Emacs服务器,emacs,Emacs,我已经在使用它来解决文档中描述的一些问题,例如,我在.emacsinit文件中有(服务器启动),并且我已经设置了编辑器env。变量设置为emacsclient,以便git和其他程序在需要我键入文本或记录消息时不会打开Emacs的新实例。到目前为止,这是非常有效的 我现在想知道是否可以将Emacs服务器用于其他用途:我经常通过ssh-X会话远程启动Emacs。有时我需要关闭ssh会话(例如,我需要重新启动本地计算机)并重新连接。如果不是为此完全关闭Emacs,我可以从Emacs中分离,然后重新连接

我已经在使用它来解决文档中描述的一些问题,例如,我在
.emacs
init文件中有
(服务器启动)
,并且我已经设置了
编辑器
env。变量设置为
emacsclient
,以便
git
和其他程序在需要我键入文本或记录消息时不会打开Emacs的新实例。到目前为止,这是非常有效的

我现在想知道是否可以将Emacs服务器用于其他用途:我经常通过
ssh-X
会话远程启动Emacs。有时我需要关闭
ssh
会话(例如,我需要重新启动本地计算机)并重新连接。如果不是为此完全关闭Emacs,我可以从Emacs中分离,然后重新连接,那就太好了

这在Emacs服务器上是可能的吗?我相信从我在网上看到的情况来看,答案是肯定的,但是:

我的问题:
如何安全地从Emacs服务器上分离,然后重新连接

如果直接从SSH会话中启动Emacs,则无法正常分离,因为Emacs进程将成为远程shell创建的进程组的一部分,如果shell存在,它将终止其进程组中的所有进程

但是,您可以先在守护程序模式下启动Emacs,使用
Emacs--Daemon
。Emacs将加载配置,启动编辑服务器(即使在配置中没有明确的
(服务器启动)
),然后从终端分离。此Emacs守护进程将在不同的SSH会话中保持活动状态

随后,仅使用
EmacClient
连接到正在运行的守护进程。

emacs-守护进程
中的
(服务器启动)

接下来使用
emacsclient文件
emacsclient-n文件
emacsclient-c
进行附加


要离开,请照常附上
C-x C-C

谢谢!使用这个,我应该如何退出客户端(让守护进程运行)并让Emacs记住窗口拆分的布局和我打开的缓冲区?你不能。要恢复完整的终端状态,您需要一个成熟的终端多路复用器,例如screen或tmux。