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

Pab*_*cia 6 emacs ansi

当我做M-!在我的emacs 21.4中,ANSI代码是文字的.例如:ls --color

^[[0m^[[0m05420273.pdf^[[0m
^[[0m100829_Baño1.pdf^[[0m 
Run Code Online (Sandbox Code Playgroud)

有没有办法让它与颜色和UTF8?

SO之前已经回答了同样的问题,但结果并不完全令人满意(给出的解决方案是打开shell模式).我知道如何在shell中使用颜色.我只想知道我怎么能用M做颜色!(shell-command)或者根本不可能.

当你只想快速显示某些东西并且不想移动到这个缓冲区并且你想让它在没有Cxk的情况下自动消失时,shell模式就太过于干扰.显然有些情况下shell缓冲区更方便但是由于另一个问题,我发现如何将颜色添加到shell模式.

[注意] emacs正在使用GNU Emacs 21.4.1(x86_64-redhat-linux-gnu,X工具包,Xaw3d滚动条)于2008-06-15在builder6.centos.org上

cjm*_*cjm 20

ansi-color.el包含处理ANSI颜色代码的函数.不幸的是,没有一个好方法可以将它挂钩shell-command.这是一个黑客攻击,但它的工作原理:

(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))))))
Run Code Online (Sandbox Code Playgroud)