Emacsclient 在关闭后保留缓冲区

Emacsclient keep buffers after closing

在 emacsclient 中,有没有一种方法可以从命令行打开文件,以便在我关闭客户端后其缓冲区在服务器上保持打开状态?

或者,我可以从客户端中 运行 告诉它有效地从缓冲区分离,以便在客户端退出时缓冲区不会被杀死吗?

通常当使用 C-x C-cC-x # 关闭 emacsclient 时,与该客户端关联的缓冲区会被杀死,这通常是一种方便的行为,但有时我希望缓冲区保留关闭后还活着。到目前为止,我发现实现此目的的唯一方法是 运行 客户端而不指定任何文件,然后使用 C-x C-f 访问它们,但我想知道是否有更好的方法来做到这一点。

您应该可以使用 -n 选项来完成此操作。这意味着它不会等待您 "finish" 缓冲区,它只会留在缓冲区列表中。我自己将其与 emacsclient 一起使用。

因此,一种选择是使用 emacsclient 的 eval 命令行选项 运行 lisp 命令来查找您想要的文件。

emacsclient -c -e '(find-file "my_file")'

显然,这比命令序列 emacsclient -cC-x C-fmy_file 要输入的内容多得多,但它可以很容易地包含在一个带有额外参数的脚本中告诉它是只选择文件还是使用 find-file.

比我更精通 elisp 的人可能会直接将选项添加到 emacs 中。

根据信息手册,如果您从不想要终止 emacsclient 缓冲区,当您使用完它们时,您可以自定义 server-kill-new-buffers 变量(更多信息在 C-h v server-kill-new-buffers).

对于您 use-case,根据您希望缓冲区终止的频率,您可以将上述变量设置为 nil,然后手动终止您 的缓冲区做想杀了。