我以 TCP 模式配置并启动了 emacs 服务器:
- Added
(setq server-host "10.16.184.33")
and (setq server-use-tcp t)
到 .emacs
- ran
emacs --daemon
在同一主机上,运行emacsclient -t
在当前终端中调出一个 emacs 框架,并运行emacsclient -c
正如预期的那样,显示了一个新的图形客户端框架。
在不同的主机上,运行emacsclient -t -f ~/.emacs.d/server/server
似乎成功连接到远程 emacs 服务器,但终端中没有创建框架:
$ emacsclient -t -f ~/.emacs.d/server/server
emacsclient: connected to remote socket at 10.16.184.33
此时,emacsclient 正在前台运行,按 Ctrl-c 并用 SIGTERM 停止它。
的价值server-client
变量显示远程 emacs 客户端已连接:
server-clients's value is
(#<process server <10.16.184.33:52710>> #<process server <10.16.177.8:59460>>)
我检查过的事情:
还有什么需要检查或配置的想法吗?
您无法“检查或配置”任何内容。你根本无法使用emacsclient
远程,因为两个进程共享框架,由于显而易见的原因,该框架不能远程工作。
如果客户端连接到 Emacs 服务器,它实际上并不创建框架本身。相反,它只是告诉服务器要创建哪种框架,即是 GUI 框架还是终端框架。然后,服务器根据客户端的请求和参数创建帧。
具体来说,如果是 TTY 客户端(即emacsclient -t
) 服务器尝试在客户端的 TTY 上创建帧。显然,如果服务器运行在不同的系统上,这将不起作用。 TTY 是本地的,无法远程访问。
仅供参考,Emacs 服务器的“TCP 模式”从来就不是用于远程访问的。它只是针对不支持本地 Unix 套接字的系统(即 Windows)的一种解决方法。
你甚至不想尝试让它发挥作用,因为它非常不安全。作为本地协议,Emacs 服务器既不支持流量加密,也不支持身份验证。通过运行可远程访问的 Emacs 服务器,您允许任何其他系统在您的计算机上执行任意 Emacs Lisp.
远程使用 Emacs 的正确方法是 SSH。在远程系统上设置SSH服务器,然后通过SSH连接到系统并启动emacsclient -t
在远程 shell 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)