Emacs でシェル コマンドを実行すると、ANSI コードのようなコードが表示されることがよくあります。それらは、シェル プロセスが新しいプロセスを生成するときに発生するようです。
Emacs シェルで Stata を実行する例を次に示します。ANSI コード (これがそのコードの場合) は下部に表示されます。
. ls *.tex
ls *.tex
-rw-r--r-- 1 pnj staff 78006 Jun 23 17:21 un_paper.tex
-rw-r--r-- 1 pnj staff 1821 Dec 22 2013 un_results.tex
. shell ls *.tex
shell ls *.tex
^[[?1l^[>un_paper.tex un_results.tex
^[[?1h^[=
.
注: ANSI カラー エスケープ シーケンスに関する同様の SO の質問が多数あります。これは私の問題ではありません!ansi-color
、 、ansi-color-for-comint-mode-on
、および ANSI カラーが既に必要です。また、ansi-term を使用するとこの問題は解決しますが、私は標準シェルのバッファーのような特性をはるかに好みます。eshell の方がわずかに優れていますが、それでもいくつかのエスケープ コードが表示されます。
私の推測では、これらは画面モード/カーソル移動コードですが、emacs にそれらを無視または処理させる方法がわかりません。TERM は xterm-256color に設定されています。
更新: h および l コードが端末/表示モードの設定に使用されることを知りました。これは、Emacs では処理できないと思われます。それらが表示されないようにする方法はありますか?