Emacs服务器可以编辑Emacs客户端指定的远程文件吗?

时间:2012-01-26 18:22:59

标签: emacs emacsclient

我正在设置 emacs服务器,以便 emacsclients 指定的文件 是相对于emacsclients的文件系统而不是服务器的文件系统。例如,如果我设置了一个 机器上的emacs服务器“darkstar”,我通过emacsclient连接到这个服务器 在“brightstar”上使用命令

emacsclient -nw '~/fantastic'

emacs服务器将尝试在darkstar上编辑文件〜/ fantastic,而不是on 明亮的星星。我喜欢这样的反面。我对各种各样的建议持开放态度。

*背景说明: 我想要一个emacs进程来跟踪我打开各种各样的缓冲区 机器,跟踪我的颜色设置,绑定等。我想要所有这些 使用emacs在任意机器上可用和复制。 emacs服务器 似乎这样做但没有编辑客户端本地文件的能力!

2 个答案:

答案 0 :(得分:1)

远程计算机(运行Emacs的计算机)是否安装了本地计算机的文件系统?如果是这样,您可以发出类似的内容:

 emacsclient --eval ´(my-open-file "~/fantastic" "my-local-machine")´

然后您可以编写函数my-open-file,例如,可以打开文件//mounts/my-local-machine/home/YOUR-ACCOUNT/fantastic(假设这是挂载点)。

这将需要一些elisp-hacking和一些脚本黑客(例如使用Ruby)来构建emacsclient命令行。

答案 1 :(得分:1)

你应该能够设置一个使用tramp的shell函数,比如

edit-local() {
    emacsclient -e "(find-file (expand-file-name \"$1\" \"/ssh:$USER@$(hostname):$PWD\"))"
}

当然,您可能需要将tramp协议更改为您已设置的任何内容。