当在 GNU Emacs GUI 中打开文件时,我使用gnuserv
附加到已经运行的 emacs。我使用“gnuserv”只是因为我读到的关于该主题的第一个文档建议了它。
今天我正在寻找一种在特定行号打开文件的方法,并找到了使用的参考emacsclient -c +4:3 文件...当我运行命令时,它抱怨需要启动服务器...
gnuserv
正在运行,因此 gnuserv 和 emacsclient 显然不是互补组件。
这两个客户端-服务器系统之间有什么关系?
例如。它们可以共存吗?...还有一个是“最新的”吗?...一个仅用于终端吗? ..它们执行类似的功能吗?..
答案1
有一段时间,Emacs 有两种主要的实现:GNU Emacs和XEmacs。 XEmacs 通常具有更多功能,GNU Emacs 奋起直追,但提供了更精致的产品。 XEmacs 在过去几年中并没有取得任何重大的发展;我认为 GNU Emacs 23 已经赶上了 XEmacs 21(最后一个版本)的所有主要功能。
GNU Emacs 和 XEmacs 的不同功能之一是 emacsclient/gnuclient。在 GNU Emacs 22 之前,emacsclient 只能打开现有 Emacs 中的文件,而 gnuclient 可以在远程 Emacs 进程中执行任意代码。从 GNU Emacs 23 开始,emacsclient 和 gnuclient 具有类似的功能。
gnuclient/gnuserv 和 emacsclient/emacsserver 使用的协议不同。所以你需要选择一个并坚持下去。 (应该可以在您的 Emacs 实例中同时运行 gnuserv 和 emacsserver;这可能需要一些小的 Lisp 调整以避免名称冲突)。
当 emacsclient 除了打开文件之外不支持任何功能时,我曾经在任何可用的地方使用 gnuserv/gnuclient ,但从 Emacs 23 开始,我使用带有 emacsclient 的内置服务器。
¹ 这些项目之间还存在其他政治差异,我不会在这里讨论。