附加到Emacs服务器
我已经在文档中描述的一些问题中使用了Emacs服务器。例如,我的.emacs
init文件中有(server-start)
,并且已经设置了EDITOR
env。 变量为emacsclient
以便git
和其他程序在需要输入文本或日志消息时不会打开Emacs的新实例。 迄今为止,这工作非常顺利。
我现在想知道是否可以使用Emacs服务器来实现其他功能:我经常通过ssh -X
会话远程启动Emacs。 有时我需要关闭ssh
会话(例如,我需要重新启动本地计算机)并重新连接。 如果不是完全关闭这个Emacs,我可以从Emacs中分离出来,然后重新连接 。
Emacs服务器可以吗? 我从网上阅读的东西中相信答案是肯定的,但是:
我的问题:
如何安全地从Emacs服务器分离并稍后重新连接 ?
如果您从SSH会话中直接启动Emacs,则无法正常分离,因为Emacs进程成为远程shell创建的进程组的一部分,并且如果该shell存在,它将终止其进程组中的所有进程。
但是,您可以先使用emacs --daemon
启动守护进程模式下的emacs --daemon
。 Emacs将加载配置,启动一个编辑服务器(即使在配置中没有明确的(server-start)
),并从终端上分离。 这个Emacs守护进程将在不同的SSH会话中保持活动状态。
随后,只能使用emacsclient
连接到正在运行的守护进程。
.emacs
emacs --daemon
或(server-start)
。
接下来使用emacsclient file
, emacsclient -n file
或emacsclient -c
进行emacsclient -c
。
如常离开附加Cx Cc
。