gpt4 book ai didi

emacs - 远程 emacs 客户端连接,但不在终端中创建新框架

转载 作者:行者123 更新时间:2023-12-01 10:51:43 24 4
gpt4 key购买 nike

我在 TCP 模式下配置并启动了一个 emacs 服务器:

  1. 添加 (setq server-host "10.16.184.33")(setq server-use-tcp t) 到 .emacs
  2. 运行 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>>)

我检查过的东西:

  • Emacs 和 emacsclient 版本:全部 24.3
  • 当交换哪些机器是服务器和远程客户端时,同样的问题发生,除了...
  • emacsclient 打印一条额外的错误消息

    emacsclient: connected to remote socket at 10.16.177.8
    *ERROR*: Could not open file: /dev/pts/26

还有什么需要检查或配置的想法吗?

最佳答案

您无法“检查或配置”任何内容。您根本无法远程使用 emacsclient,因为两个进程共享框架,由于显而易见的原因,该框架无法远程工作。

如果客户端连接到 Emacs 服务器,它实际上并不创建框架本身。相反,它只是告诉服务器要创建哪种框架,即是 GUI 框架还是终端框架。服务器然后根据客户端的请求和参数创建框架。

具体来说,如果是 TTY 客户端(即 emacsclient -t),服务器会尝试在客户端的 TTY 上创建一个框架。显然,如果服务器在不同的系统上运行,这将不起作用。 TTY 是本地的,无法远程访问。

仅供引用,Emacs 服务器的“TCP 模式”从未用于远程访问。对于不支持本地 Unix 套接字的系统(即 Windows),它只是一种变通方法。

您甚至不想尝试让它工作,因为它非常不安全。作为本地协议(protocol),Emacs 服务器既不支持流量加密也不支持身份验证。通过运行可远程访问的 Emacs 服务器,您允许任何其他系统在您的机器上执行任意 Emacs Lisp

远程使用 Emacs 的正确方法是 SSH。在远程系统上设置 SSH 服务器,然后通过 SSH 连接到系统并在远程 shell 中启动 emacsclient -t

关于emacs - 远程 emacs 客户端连接,但不在终端中创建新框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com