emacs shell模式下的Gnu屏幕:如何修复颜色转义码

Leo*_*yev 10 emacs gnu-screen tmux

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

Shell模式是相当可取的,因为我在使用Mx术语或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/

Mar*_*ann 5

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

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

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

我建议的是看一下"emacsclient -t"命令(Emacs的一部分),它允许你打开一个连接到现有Emacs实例的本地帧,其方式类似于Screen允许你重新连接到以前创建的Screen实例.这样,您可以在本地计算机上配置emacsclient,以通过TCP重新连接到持久远程Emacs实例.