如何关闭emacsclient框架而不杀死服务器/守护程序?
在gui中执行C-x C-c
或C-x 5 0
将退出帧和服务器(以及其他客户端),而这只是从终端完成后退出当前帧。
(Ps:我的emacs版本是24.2,gtk。我已经尝试过没有init-file来查看它是否来自我的配置,但结果是一样的)
答案 0 :(得分:7)
当emacsclient
启动时,它会在迷你缓冲区中说“当使用缓冲区时,输入C-x#”。
答案 1 :(得分:6)
我认为这里的关键点是你需要以守护进程模式启动服务器。如果服务器在现有的emacs进程中运行 - 例如,如果你的init文件中有(server-start)
- 服务器就会以emacs进程终止。
有几种方法可以在守护进程模式下启动服务器:
emacs
命令行选项--daemon
emacsclient
命令行选项调用--alternate-editor=""
,该选项实际上会为您运行emacs --daemon
,然后尝试连接到它一旦你的服务器处于守护进程模式,你应该能够关闭任何帧,守护进程将继续坐下来等待进一步的连接。
答案 2 :(得分:4)
使用emacsclient
/ -n
标志开始--no-wait
:
不要等待服务器返回
在这种情况下,您无需关闭客户端。
如果你必须关闭emacsclient
只是杀死缓冲区,服务器将保持不变。
答案 3 :(得分:2)
因为你从现有的框架中运行了(server-start)
,所以该框架不是emacsclient框架,关闭最后一个这样的框架显然会得到与C-x C-c
相同的处理:它将退出Emacs。
如果您使用emacs --daemon
,可能使用ALTERNATE_EDITOR=''
技巧,则不会出现此问题;您只需使用emacsclient -n -c
打开一个GUI框架,关闭它后,守护程序就会等待您打开一个新的框架,无论是图形还是基于终端。
答案 4 :(得分:0)
我正在使用Debian和i3以及OSX。我通常通过窗口管理器的关闭窗口快捷方式退出emacsclient GUI框架。例如,在OSX中,我使用“Command + w”关闭客户端GUI框架而不杀死服务器,在i3中,我使用“Super + Shift + q”(i3的默认关闭窗口)退出客户端框架