替换ssh+;屏幕+;emacs编辑器

替换ssh+;屏幕+;emacs编辑器,emacs,remote-access,gnu-screen,Emacs,Remote Access,Gnu Screen,我的目标是远程编写代码。到目前为止,我一直在使用ssh+screen+编辑器(例如vim) 我知道使用本地emacs(或vim)可以编辑远程文件。但是一旦本地emacs关闭,我想重新打开它(或者使用另一台计算机打开它),我就需要重新打开所有缓冲区 有没有一种方法可以在远程机器上设置emacs服务器,并且我可以使用本地emacs客户端简单地访问它?基本上模拟屏幕行为。我想你可能会在这里找到答案 根据, Emacs服务器通常使用称为“本地套接字”的操作系统功能来侦听连接。某些操作系统,如Micro

我的目标是远程编写代码。到目前为止,我一直在使用ssh+screen+编辑器(例如vim)

我知道使用本地emacs(或vim)可以编辑远程文件。但是一旦本地emacs关闭,我想重新打开它(或者使用另一台计算机打开它),我就需要重新打开所有缓冲区


有没有一种方法可以在远程机器上设置emacs服务器,并且我可以使用本地emacs客户端简单地访问它?基本上模拟屏幕行为。

我想你可能会在这里找到答案

根据,

Emacs服务器通常使用称为“本地套接字”的操作系统功能来侦听连接。某些操作系统,如Microsoft Windows,不支持本地套接字;在这种情况下,Emacs使用TCP。启动Emacs服务器时,Emacs会创建一个服务器文件,其中包含EmacClient建立连接所需的一些TCP信息。默认情况下,服务器文件位于~/.emacs.d/server/中。在Microsoft Windows上,如果EmacClient在那里找不到服务器文件,它将查找APPDATA环境变量所指向目录的.emacs.d/server/子目录。您可以告诉EmacClient使用带有'-f'或'--server file'选项的特定服务器文件,或者通过设置EMACS_server_file环境变量

即使本地套接字可用,也可以通过将变量server use TCP设置为t来告诉Emacs使用TCP。TCP的一个优点是服务器可以接受来自远程机器的连接。为此,必须(i)将变量服务器主机设置为运行Emacs服务器的计算机的主机名或IP地址,以及(ii)向EmacClient提供服务器文件。(实现后者的一个方便方法是将服务器文件放在网络文件系统(如NFS)上。)

当Emacs服务器使用TCP时,变量服务器端口决定要侦听的端口号;默认值nil表示在服务器启动时选择一个随机端口


当然,请确保调整服务器端的防火墙设置,以便客户端可以连接到运行emacs服务器的计算机。

我已经尝试过其他帖子中提到的方法很多次,但从未成功过


emacs能够做的一件好事是桌面保存模式,当您杀死emacs并在再次打开emacs时恢复它们时,它将存储所有打开的缓冲区。默认情况下,它不会恢复不定期缓冲区,但您可以调整设置以允许这种情况发生。您可以找到更多相关信息。

您可以在本地登录,然后通过ssh连接到远程计算机。在远程计算机上,您可以拥有“可加入的屏幕会话”。在这个会话中,您将运行emacs,所有缓冲区都与您之前一样。如果远程计算机需要重新启动,并且您可能会丢失会话,您也可以将桌面保存与此结合使用。这是我使用的最实用的解决方案。您可以随时更改“客户端计算机”。您不需要使用本地emacs客户端。您还可以为不同的项目创建多个会话,并在不同的终端上加入特定项目的屏幕会话。

谢谢您的回答。但这与在本地计算机上运行守护程序几乎是一样的(如果您从未重新启动计算机)。我正在寻找一个解决方案,我可以改变客户端计算机。非常感谢你的答复。我在redhat和OSX机器上都试过了,但都没有在~/.emacs.d/server中留下一个服务器场,而且都没有设置它们的APPDATA。比起调整防火墙设置,可以使用ssh转发端口:@chaiy FWIW我只是在OSX上用GNU emacs试过,只要你
(setq服务器使用tcp t)
之前
(服务器启动)
我在
~/.emacs.d/server/server
上得到了一个包含服务器信息的文件。我从来没有遇到过这样的问题,但不幸的是,我从来没有能够让远程客户端连接到服务器。@RandyMorris谢谢你尝试这个。我有一个同事也尝试过。但他也没有得到这个文件。可能是不同的emacs版本?我们尝试了macports one和单机版,但似乎都没有在.emacs.d中留下服务器文件夹。我用自制软件构建emacs,可能值得一试。这是我描述为ssh+屏幕+编辑器的设置,我也一直在使用。但我在让shell滚动和跨选项卡复制/粘贴工作时遇到了一些问题。所以我我想在本地计算机上编辑远程文件可能会使这更容易。因此,在这种情况下,您在远程计算机X、Y等上有文件,在计算机E上有一个emacs服务器,您想在计算机A、B等上实际使用编辑器,通过连接到E来查看X和Y上的文件?