2009-04-01 11 views
31

私はUbuntu8.10とemacs-snapshotを使用しています。 Emacsと入力し、「LS」のショーにシェルモードを実行すると、コードをエスケープ:Emacsシェルに何か問題があります

screenshot http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png

どのように私は私が期待した出力を得ることができますか?

+0

まあ、これらの面白い文字は、他の人の手掛かりとなるエスケープシーケンス( 'ESC' '[' '0' 'm')ですが、特定の修正を知らないので答えません。 – paxdiablo

答えて

45

あなたがサポート色をしAnsiTermを使用するかは、通常のシェルのためAnsiColorを有効にすることができます

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t) 
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) 
+1

これが何らかの効果を持つためには、 'ansi-color-process-output'は' comint-output-filter-functions'になければなりません。 – updogliu

1

問題は、「L」が出力され、Emacsはそれのいずれかを有するされていないcoloriseしようとしているということです。以下試してください:M-x termまたはM-x eshell

 
$ unalias l 
$ alias l ls --color=never 
+0

emacsでのみ変更するには? – linjunhalida

+1

TERM =おそらく、おそらくls。 – jrockway

5

さらに、あなたは別のシェルを選択することができます。前者は(あなたがそれを起動したら、あなたはC-c C-jとモードから抜け出すとC-c C-kで再度取得することができます)shell-modeよりも、実際の端末エミュレータにずっと近いインタフェースを提供します。後者はElispで書かれたシェルの実装です(あなたは共通のシェルコマンドを使うことができ、Lispコードを評価することもできます)。

+0

私はeshellを知っていますが、私はそれを好きではありません。 – linjunhalida

+1

汎用のプログラミング言語が* shell *よりも強力ではないと言っていますか?私はあなたがそれを使う方法を知らないと思う。 – jrockway

+0

私はそれを意味するものではありません。これはシェルと言語の違いではなく、 'シェルモード'とその選択肢です。 Emacsの中でシェルを使いたい場合、私は自分自身が 'term-mode'という便利な機能を持っているので、バッファを実際の端末のように動作させることができます。あるいは、他の一般的なEmacsバッファとして動作させることもできます。 –

3

vatineの答えを拡張し、あなたが追加することができ、あなたの.cshrc内部(の.tcshrc/.bashrcのこと)環境変数INSIDE_EMACSのチェックでラップされています。例えば

(私の.tcshrcから):

if ($?INSIDE_EMACS) then 
    alias l 'ls --color=never' 
endif 
+0

'sh'とcompatiblesの場合、エイリアスの代わりに関数を使いたいかもしれませんが、' $ INSIDE_EMACS "&& alias l = 'ls --color = never''をテストしてください。 – tripleee

2

のMx ANSI-カラー用-のcomintモードオン

1

私は〜/ .bashrcの中で私のalias ls ='ls --color=auto'を包ん:

case "$TERM" in 
xterm*|rxvt*) 
    if [ -x /usr/bin/dircolors ]; then 
     alias ls='ls --color=auto' 
     ... 
    fi 
    ;; 
*) 
    ;; 
esac 

これは、Emacsでcolor=autoを使用して無効にします。