使用 X 转发连接到远程 Emacs

Connecting to remote Emacs with X forwarding

我有一个桌面总是 运行 在工作时打开 Emacs。我想在工作时远程连接到我的计算机上的进程,并且能够使用 ssh 和 emacsclient 做到这一点。但是我无法在不导致原始进程崩溃的情况下干净地退出。我正在执行以下操作以连接到服务器名称为 'foo':

的 emacs 框架

$ ssh -XC ej@tower

$ emacsclient -s foo -e "(make-frame-on-display \"$DISPLAY\")"

这行得通,但是我找不到任何方法在不破坏原始进程的情况下终止 ssh 连接。似乎某些后台进程仍处于连接状态,并且将其终止(在终止远程连接后发生)会导致一切中断。有谁知道更好的方法或方法吗?

我知道你在说什么,奇怪的是我无法在我当前的系统上重新创建它。我不确定为什么会这样。然而...

避免这种情况的经典解决方法是在子 shell:

中启动进程
$ (emacs &)

而不是:

$ emacs &

还有 nohupdisown 之类的东西,您可能有也可能没有,但是 sub-shell 方法很简单,对我来说一直很可靠。

您也可以从连接的本地端启动进程:

$ ssh -XC ej@tower -f emacs --daemon=foo
$ ssh -XC ej@tower -f emacsclient -s foo -c

我 运行 遇到的问题源于 a Gtk+ bug,它导致 Emacs 在 X11 连接意外丢失时崩溃。

重新编译以使用不同的 X 工具包解决了这个问题。

./configure --with-x-toolkit=lucid