![通过 emacs 和 emacsclient 访问文件有什么区别?](https://linux22.com/image/1289097/%E9%80%9A%E8%BF%87%20emacs%20%E5%92%8C%20emacsclient%20%E8%AE%BF%E9%97%AE%E6%96%87%E4%BB%B6%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
我之所以问这个问题,是因为除了使用 Thunderbird 外部编辑器扩展(编辑器指定为 )时,它们在大多数情况下看起来都很相似。使用(有时不起作用?)emacsclient -c
关闭使用此 emacsclient 实例创建的框架也会杀死与此框架关联的缓冲区(这不是通常的 emacsclient 行为)。C-x C-c
C-x #
并且,一般来说,C-x C-c
除非在该框架中访问了另一个缓冲区,否则只会关闭框架——在此之后,C-x C-c
将尝试关闭所有 emacs。我该如何理解这种行为?
答案1
在 Emacs 中,您可以按 Ch k,然后输入想要了解的组合键,以获取任何键的帮助。按 Ch k Cx # 将返回以下内容:
Cx#运行命令server-edit,它是`server.el'中的交互式编译的Lisp函数。
它与 Cx# 绑定。
(服务器编辑和可选 ARG)
切换到下一个服务器编辑缓冲区;对当前缓冲区说“完成”。如果服务器缓冲区是当前的,则将其标记为“完成”并可选择保存。如果缓冲区在客户端请求之前不存在,也会被终止。当客户端的所有缓冲区都标记为“完成”时,客户端会收到通知。
临时文件(例如 MH 文件)始终会保存和备份,不会有任何疑问。(如果变量“make-backup-files”为零,则仍会禁止备份;您可以在特定缓冲区中本地设置它以防止对其进行备份。)变量“server-temp-file-regexp”控制哪些文件名被视为临时文件名。
如果使用前缀参数调用,或者没有正在运行的服务器进程,则启动服务器进程,仅此而已。由 Cx # 调用。Cx # 运行命令 server-edit,它是 'server.el' 中的交互式编译 Lisp 函数。
Cx Cc 同样如此
Cx Cc 运行命令 save-buffers-kill-terminal,它是“files.el”中的交互式编译的 Lisp 函数。
它与 Cx Cc, 绑定。
(保存缓冲区杀死终端和可选 ARG)
建议保存每个缓冲区,然后终止当前连接。如果当前框架没有客户端,则终止 Emacs 本身。
使用前缀 ARG,默默保存所有文件访问缓冲区,然后终止。
如果 emacsclient 启动时带有要编辑的文件名列表,则只会要求保存这些文件。