7

私がM-をするとき!私のemacs21.4では、ANSIコードは文字通りになります。例えば:ls --color

^[[0m^[[0m05420273.pdf^[[0m
^[[0m100829_Baño1.pdf^[[0m 

カラーとUTF8でそれを持っている方法はありますか?

同じ質問が以前にSOで回答されましたが、完全に満足のいく結果は得られませんでした(与えられた解決策はシェルモードを開くことでした)。シェルに色を付ける方法を知っています。Mでどうやって色を塗れるのか知りたい!(シェルコマンド)またはそれがまったく不可能な場合。

シェルモードは、何かをすばやく表示したいだけで、このバッファーに移動したくない場合や、Cxkなしで自動的に非表示にしたい場合は、煩わしすぎます。明らかに、シェルバッファの方が便利な場合もありますが、他の質問のおかげで、シェルモードに色を付ける方法を見つけました。

[注]builder6.centos.orgで2008-06-15の使用中のemacsGNUEmacs 21.4.1(x86_64-redhat-linux-gnu、Xツールキット、Xaw3dスクロールバー)

4

2 に答える 2

20

ansi-color.elANSIカラーコードを処理するための関数が含まれています。残念ながら、それをにフックする良い方法はありません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))))))
于 2011-04-28T16:09:07.400 に答える
1

UTF-8について:

シェルコマンド出力で非ASCII文字を変換するためのコーディングシステムを指定するには、このコマンドの前にCxRETcを使用します。

非対話型の呼び出し元は、 coding-system-for-read' and coding-system-for-write'をバインドすることによってコーディングシステムを指定できます。

これはのドキュメントからshell-commandです。

于 2011-04-28T19:55:41.520 に答える