2

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

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

C-x C-c通常,当使用或关闭 emacsclient 时C-x #,与该客户端关联的缓冲区会被杀死,这通常是一种方便的行为,但有时我希望缓冲区在关闭后保持活动状态。到目前为止,我发现完成此操作的唯一方法是在不指定任何文件的情况下运行客户端,然后使用 访问它们C-x C-f,但我想知道是否有更好的方法来做到这一点。

4

3 回答 3

1

根据 info 手册,如果您不想杀死emacsclient缓冲区,当您完成它们时,您可以自定义server-kill-new-buffers变量(更多信息参见C-h v server-kill-new-buffers)。

对于您的用例,根据您想要终止缓冲区的频率,您可以将上述变量设置为nil,然后手动终止您确实想要终止的缓冲区。

于 2017-02-12T18:34:43.117 回答
1

您应该能够通过使用该-n选项来执行此操作。这意味着它不会等待你“完成”缓冲区,它只会留在缓冲区列表中。我自己将它与 emacsclient 一起使用。

于 2015-08-11T22:22:50.707 回答
1

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

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

显然,这比命令序列emacsclient -c, C-x C-f,多得多my_file,但它可以很容易地包装在一个脚本中,该脚本需要一个额外的参数来告诉它是选择文件还是使用find-file.

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

于 2015-08-11T23:30:40.847 回答