4

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

emacsclient -nw '~/fantastic'

emacs 服务器将尝试在 darkstar 上而不是在 brightstar 上编辑文件 ~/fantastic。我喜欢这个的相反。我对各种滑稽的建议持开放态度。

*背景说明:我想要一个 emacs 进程来跟踪我在各种机器上打开的所有缓冲区,跟踪我的颜色设置、绑定等。我希望所有这些都可用并在任何带有 emacs 的机器上复制。emacs 服务器似乎就是这样做的,但无法编辑客户端的本地文件!

4

2 回答 2

1

远程机器(运行 Emacs 的机器)是否挂载了本地机器的文件系统?如果是这样,您可以发出类似的问题:

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

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

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

于 2012-01-26T19:09:52.337 回答
1

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

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

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

于 2012-01-26T23:19:06.127 回答