【问题标题】:Non ad hoc way for vt100 / ansi-color escapes within M-x shellM-x shell 中 vt100 / ansi-color 转义的非临时方式
【发布时间】:2012-12-20 03:02:14
【问题描述】:

M-x shell 运行一个程序,试图产生漂亮的色彩输出。但我明白了:

?- 真的。 ^[[1m真。^[[0m

这显然不是 EMACS 的错误,因为它将环境变量 TERM 设置为哑。只是我调用的程序忽略了这些信息。

我知道ansi-color-for-comint-mode-on 以特别的方式解决了这个问题:环境变量 TERM 仍然是愚蠢的。也就是说,相应地解释这个变量的程序根本不会使用转义。

是否有一种不那么特别的方法,设置 TERM 或类似的方法?

【问题讨论】:

  • 目前还不清楚您可能认为什么是非临时解决方案 - 打开ansi-color-for-comint-mode 似乎并不是那么临时。如果程序坚持在 TTY 上输出颜色,除了解释(或忽略)它们还能做什么?

标签: emacs terminal ansi-colors


【解决方案1】:

如果 M-x ansi-color-for-comint-mode-on 做到了,自定义 ansi-color-for-comint-mode 应该是你所需要的。

【讨论】:

  • 换一种说法:默认的 M-x 术语有什么原因吗?
  • @false - 每当我需要 Emacs 中的全功能终端时,我个人都会使用 M-x ansi-termM-x ansi-color-for-comint-modeM-x ansi-term 有何不同?
  • @user273158:您的解决方案是最不临时的。
  • @false,我刚刚添加了我的评论作为答案。
【解决方案2】:

您可以使用M-x ansi-term 代替其他shell(M-x shellM-x termM-x eshell)。 Ansi-term 旨在使用现成的 ansi 颜色。更好的是,我建议你使用multi-term(你可以阅读更多关于它的信息herehere),它基本上支持ansi-term的所有功能以及在终端之间轻松切换和定义哪些键盘快捷键的能力被发送到终端,哪些被 Emacs 捕获和解释。

【讨论】:

    【解决方案3】:

    也许,根据下面的例子:

    (setenv "DISPLAY" ":0")
    
    (setenv "PATH" (concat "/home/an_user/bin:"
                    (getenv "PATH")))
    

    你可以试试:

    (setenv "TERM" ....)
    

    或者这不是你的想法?

    【讨论】:

    • 是的,想通了,觉得值得一试。删除?
    • “哑巴”到底是什么意思?
    • 当我在 Emacs 中说 echo $TERM 时很愚蠢
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 2021-01-15
    • 2013-01-13
    • 2013-03-15
    相关资源
    最近更新 更多