2011-01-14 15 views
10

emacs内にシェルモードでscreenまたはtmuxを付けたいと思います。私はしばしばリモートサーバ上の画面内で劣悪なプロセスを持つemacsを実行しています。ワークフローをローカルのemacs + TRAMPに移すことができればいいと思う。しかし、永続セッションを再アタッチする機能は必須です。 (このようなワークフローはR [1]での解析に特に便利です)emacsシェルモードのGnu画面:カラーエスケープコードの修正方法

Mx用語またはMx ansi-term + screen + Rの組み合わせを使用すると、その他の不具合が発生したり、クラッシュする可能性があるため、シェルモードが望ましい。しかし、Mxシェルの下で走っているときに、スクリーンにエスケープコードとしてレンダリングされたansiカラーを取り除くことはできません。私がansi-color-for-comint-mode-onを使うとき、彼らはうまくいきます - しかし、画面が来るとすぐに、それは恐ろしい混乱になります。

shell + screenまたはtmuxでansiの色を正しく解釈するための一連の条件を考え出した人はいますか?どのような完全に色を取り払うことについてはどうですか?...永続的なリモートプロセスを実行し、ローカルのemacsに添付の面で他の選択肢がありますか?...

[1] http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/

+1

@Seppoは正しい:シェルモードはあなたが望むことをすることができません。 'M-x term'や' M-x ansi-term'の問題を記述することは有益かもしれません。 –

答えて

5

は、私の知る限り、スクリーンは、VT100などの伝統的な文字の端末ではないという理由だけで、Emacsのシェルモードは、単にと、提供することはできませんしませんあなたの端末の機能が必要です。だから、問題はカラーコードを取り除くか解釈しようとするのではなく、Screenが正しく機能するために必要な端末機能が増えていることです。

デフォルトでは、Emacsのシェルモードでは画面が表示されません(画面のクリアが必要であるというエラーが表示されます)。ウェブ上のいくつかの記事は、TERM = xtermをこれを回避するように設定するよう提案しているようですが、端末がXTermの機能を持っていると考えることを欺くだけのスクリーンです。

Emacsの用語とansi-termモードは、Screenが要求する端末機能を提供しますが、残念ながらそれらのモードには問題があるようです。

代わりに、Emacsの一部である "emacsclient -t"コマンド(Emacsの一部)を見てみると、Screenと同様の方法で既存のEmacsインスタンスに接続されたローカルフレームを開くことができます以前に作成したScreenインスタンスに再接続します。そうすれば、永続的なリモートEmacsインスタンスにTCPを介して再接続するために、emacsclientをローカルコンピュータ上に設定することができます。

1

私は、画面を使用していません、しかしこれはあなたの.bashrcから修正することができます。私はxtermのウィンドウの色をオンにして、それをサポートしていない他の端末のためにそれを残して、そこに条件付きコードの束を持っています。 M-xシェルは、TERM変数をダムに設定するので、それをテストし、それに応じて色を設定することができます。

case "$TERM" in 
dumb) 
## non-color settings here 
;; 
xterm) 
## color settings here 
;; 
*) 
## default (maybe you want non-color here?) 
;; 
esac 
関連する問題