emacs shell 缓冲区中的奇怪字符

zed*_*doo 6 emacs

我的 emacs 在 shell 缓冲区中列出了奇怪的转义字符:

me@ubuntu:~//configuration.template/hooks$ 
me@ubuntu:~//configuration.template/hooks$ ls
[0m[01;32mpost-commit[0m  [01;32mpost-commit~[0m  [01;32mpost-update[0m  
[01;32mpost-update~[0m  [01;32mpre-commit[0m  [01;32mpre-commit~[0m  [01;32mupdate[0m      update~
Run Code Online (Sandbox Code Playgroud)

有谁知道我该如何解决?

jwe*_*rny 5

“ansi-color-for-comint-mode”处理外壳中的一些颜色。它并不完美,但它有帮助。要打开它,请转到您的外壳并执行[M-x]ansi-color-for-comint-mode-on[RET].

-约翰


Gil*_*il' 3

这些字符是变色控制序列。这些序列在 emacs 缓冲区中不起作用*shell*:相反,它们几乎直接显示。

您应该更改 shell 启动文件(可能~/.bashrc),以便ls仅在支持颜色的终端中使用颜色。实际上,这可能意味着除dumb(缓冲区中提供的终端类型*shell*)之外的每种终端类型。终端类型在TERM环境变量中指示,因此您可以执行以下操作:

if [ "$TERM" != "dumb" ]; then
  alias ls='ls --color=auto'
fi
Run Code Online (Sandbox Code Playgroud)