当我在 Emacs 中运行 shell 命令时,我经常看到看起来像 ANSI 代码的内容。它们似乎发生在 shell 进程产生一个新进程时。
这是在 Emacs shell 中运行 Stata 的示例。ANSI 代码(如果是这样的话)在底部可见:
. ls *.tex
ls *.tex
-rw-r--r-- 1 pnj staff 78006 Jun 23 17:21 un_paper.tex
-rw-r--r-- 1 pnj staff 1821 Dec 22 2013 un_results.tex
. shell ls *.tex
shell ls *.tex
^[[?1l^[>un_paper.tex un_results.tex
^[[?1h^[=
.
注意:关于 ANSI 颜色转义序列有很多类似的 SO 问题。这不是我的问题!我已经要求ansi-color
, 和ansi-color-for-comint-mode-on
, 和 ANSI 颜色正在工作。此外,使用 ansi-term 解决了这个问题,但我更喜欢标准 shell 的类似缓冲区的特性。eshell 稍微好一点,但仍然显示一些转义码。
我的猜测是这些是屏幕模式/光标移动代码,但我不知道如何让 emacs 忽略或处理它们。TERM 设置为 xterm-256color。
更新:我了解到 h 和 l 代码用于设置终端/显示模式,我认为 Emacs 无法处理。有没有办法阻止它们被显示?