shell - 运行 Emacs shell 时可见的 ANSI 转义序列(这些不是 ANSI 颜色)

标签 shell emacs ansi-escape

当我在 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 color escape sequences类似的SO问题有很多。这不是我的问题!我已经需要 ansi-coloransi-color-for-comint-mode-on,并且 ANSI 颜色正在工作。此外,使用 ansi-term 解决了这个问题,但我更喜欢标准 shell 的类似缓冲区的特性。 eshell 稍微好一点,但仍会显示一些转义码。

我的猜测是这些是屏幕模式/光标移动代码,但我不知道如何让 emacs 忽略或处理它们。 TERM 设置为 xterm-256color。

更新:我了解到 h 和 l 代码用于设置终端/显示模式,我认为 Emacs 无法处理。有什么方法可以阻止它们显示吗?

最佳答案

如您所说,Emacs 的 eshell 无法处理转义码——它是一个“哑巴”终端。但是,您的 TERM 变量设置告诉您的 shell 它能够处理这些转义码。

当您在 eshell 中时,将 TERM 设置为“dumb”应该可以让那些难看的转义码消失。

关于shell - 运行 Emacs shell 时可见的 ANSI 转义序列(这些不是 ANSI 颜色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094855/

相关文章:

python - Ffmpeg 映射和 filter_complex 子进程 - Python

linux - 启动服务应用程序并将其通过管道传输到当前终端

emacs - 如何让Emacs,nrepl.el和Leiningen一起玩?

emacs - 在 Spacemacs 中,如何启用 Web 模式 .blade.php 文件?

emacs/elisp : What is the hash (pound, 数字符号,octothorp) 符号用于什么?

newline - 什么是回车、换行和换页?

python - ANSI 代码的字符串问题

regex - 使用 perl 而不是 grep

c - 在 Makefile 中运行 unix 命令以解析文本并将其传递给链接行作为定义 -D

php - 如果不传递 --ansi 则无法在 PHP CLI 中获取 ANSI 颜色