emacs shell命令输出不显示ANSI颜色,但显示代码

emacs shell命令输出不显示ANSI颜色,但显示代码,emacs,ansi,Emacs,Ansi,当我这么做的时候,我!在我的emacs 21.4中,ANSI代码是文字。例如:ls--color ^[[0m^[[0m05420273.pdf^[[0m ^[[0m100829_Baño1.pdf^[[0m 有没有办法让它与颜色和UTF8搭配 同样的问题已经解决,但结果并不完全令人满意(给出的解决方案是打开一个壳模式)。我知道如何在贝壳里有颜色。我只想知道我怎么能和M有颜色!(shell命令)或者如果根本不可能 如果您只想快速显示某些内容,而不想移动到此缓冲区,并且希望它在不使用C-x-k

当我这么做的时候,我!在我的emacs 21.4中,ANSI代码是文字。例如:
ls--color

^[[0m^[[0m05420273.pdf^[[0m
^[[0m100829_Baño1.pdf^[[0m 
有没有办法让它与颜色和UTF8搭配

同样的问题已经解决,但结果并不完全令人满意(给出的解决方案是打开一个壳模式)。我知道如何在贝壳里有颜色。我只想知道我怎么能和M有颜色!(shell命令)或者如果根本不可能

如果您只想快速显示某些内容,而不想移动到此缓冲区,并且希望它在不使用C-x-k的情况下自动消失,那么shell模式就太麻烦了。显然,在某些情况下,shell缓冲区更方便,但由于另一个问题,我发现了如何将颜色添加到shell模式

[注]使用中的emacs
builder6.centos.org上2008-06-15的GNU Emacs 21.4.1(x86_64-redhat-linux-GNU,X toolkit,Xaw3d滚动条)包含处理ansi颜色代码的函数。不幸的是,没有真正的好方法将它挂接到
shell命令中。这有点像黑客,但它是有效的:

(require 'ansi-color)

(defadvice display-message-or-buffer (before ansi-color activate)
  "Process ANSI color codes in shell output."
  (let ((buf (ad-get-arg 0)))
    (and (bufferp buf)
         (string= (buffer-name buf) "*Shell Command Output*")
         (with-current-buffer buf
           (ansi-color-apply-on-region (point-min) (point-max))))))
关于UTF-8:

指定的编码系统 在中转换非ASCII字符 shell命令输出,使用C-x RET C 在这个命令之前

非交互调用方可以指定 通过绑定对系统进行编码 “读取”和“读取”的编码系统
write'的编码系统

这来自
shell命令的文档