使用单个emacs实例从多个(虚拟)机器上操作

3

我喜欢emacsclient。它允许我在一个Emacs框架中进行所有编辑,当程序想要打开编辑器时也是如此(例如:export EDITOR=emacsclient)。

我也希望能够在虚拟机上实现这样的功能。我可以使用tramp在我的单框架设置中使用Emacs编辑远程文件,并且效果非常好,但这还不够。当我调用git commitsudoedit时,我将不得不使用远程机器上偶然安装的那个垃圾终端编辑器。

那么,是否有像emacsclient一样的跨多台机器的解决方案?

2个回答

5

推测:如果您可以从虚拟机通过ssh连接回本地计算机,那么虚拟机可能可以使用适当的tramp前缀在本地计算机上调用emacsclient,以访问远程文件。为此设置一个脚本,并配置您的远程EDITOR环境变量以匹配。


哇,这是一个惊人的想法,而且它还起作用!我编写了这样一个脚本,请参见https://gist.github.com/850795。 - Petri Lehtinen
太棒了。我可能得自己试一下 :) - phils
3
即使您无法从虚拟机回到本地计算机,也可以完成此操作。您可以通过TCP运行Emacs服务器,使用ssh -R将端口转发回本地计算机,然后告诉emacsclient通过该端口连接。详情请参阅https://dev59.com/UHE95IYBdhLWcg3wm_Qu和http://snarfed.org/emacsclient_in_tramp_remote_shells。 - ryan

2
你可能不知道TRAMP的用处还有很多。首先,你可能已经注意到在远程框中无法使用 /sudo: 命令,但是TRAMP可以让你代理到远程框并使用任何支持的协议,因此实际上你可以在远程框中使用 /sudo: 命令。请参见 tramp-default-proxies-alist
你提到在远程框中调用 git commit。你是否考虑过使用Emacs git界面之一,例如magit?它们也可以通过TRAMP工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接