10

我想在 shell 模式下在 emacs 中附加 screen 或 tmux。我经常发现自己在远程服务器的屏幕内运行带有劣质进程的 emacs;如果我可以将工作流程转移到本地 emacs + TRAMP,那就太好了;然而,重新连接持久会话的能力是必须的。(这样的工作流程对于 R [1] 中的分析特别有用)

Shell 模式是相当可取的,因为我在使用 Mx term 或 Mx ansi-term + screen + R 的组合时不断遇到杂项故障甚至崩溃。但是,我似乎无法摆脱呈现为转义码的 ansi 彩色在 Mx shell 下运行时的屏幕。当我使用ansi-color-for-comint-mode-on时,它们很好——但是一旦屏幕出现,它就会变得一团糟。

有没有人想出用 shell + screen 或 tmux 正确解释 ansi 颜色的一组条件?完全摆脱颜色怎么样?..在运行持久远程进程并将它们附加到本地 emacs 方面还有其他选择吗?..

[1] http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/

4

2 回答 2

5

据我所知,Screen 需要 Emacs 的 shell 模式根本没有也无法提供的终端功能,因为它不是像 VT100 这样的传统字符终端。所以问题不在于摆脱或试图解释颜色代码——Screen 需要更多终端功能才能正常运行。

默认情况下,Screen 甚至不会以 Emacs 的 shell 模式启动,据我所知(它错误地说它需要清除屏幕功能)。网络上的一些帖子似乎建议设置 TERM=xterm 来解决这个问题,但这只是在欺骗 Screen 认为终端具有 XTerm 的功能,而它没有。

Emacs 的 term 和 ansi-term 模式将提供 Screen 所需的终端功能,但不幸的是,您似乎在使用这些模式时遇到了麻烦。

我建议改为查看“emacsclient -t”命令(Emacs 的一部分),它允许您以类似于 Screen 允许您重新连接到的方式打开连接到现有 Emacs 实例的本地框架之前创建的 Screen 实例。这样,您也许可以在本地计算机上配置 emacsclient 以通过 TCP 重新连接到持久的远程 Emacs 实例。

于 2011-03-02T18:16:11.797 回答
1

我不使用屏幕,但也许你可以从你的 .bashrc 中解决这个问题。我有一堆条件代码,为 xterm 窗口打开颜色,但为其他不支持它的终端关闭它。Mx shell 将 TERM 变量设置为哑,因此您可以对其进行测试并相应地设置颜色。

case "$TERM" in
dumb)
## non-color settings here
;;
xterm)
## color settings here
;;
*)
## default (maybe you want non-color here?)
;;
esac
于 2011-02-08T14:56:01.547 回答