2011-01-14 19 views
10

我想在shell模式下在emacs內部附加屏幕或tmux。我經常發現自己在遠程服務器的屏幕上運行emacs,並且進程較低;如果我可以將工作流程轉移到本地emacs + TRAMP將會很好;然而,重新附加持續會話的能力是必須的。 (這種工作流程對於R [1]中的分析特別有用)emacs shell模式中的Gnu屏幕:如何修復顏色轉義碼

殼模式是比較理想的,因爲當使用Mx項或Mx ansi-term + screen + R的組合時,我總是遇到各種小故障甚至崩潰。然而,當我在Mx shell下運行時,我似乎無法擺脫屏幕上顯示的轉義代碼的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是正確的:shell模式不能做你想做的。用「M-x term」或「M-x ansi-term」來描述你遇到的問題可能是有用的,也許我們可以幫助解決這些問題。 –

回答

5

據我所知,屏幕需要終端的功能,Emacs的shell模式根本不和不能提供,只是因爲它不像VT100傳統的字符終端。所以問題不在於擺脫或試圖解釋顏色代碼 - 屏幕需要正確運行的終端功能更多。

默認情況下屏幕甚至不會在Emacs的shell模式下啓動,據我所知(它錯誤地說它需要清晰的屏幕功能)。網絡上的一些帖子似乎建議設置TERM = xterm來解決這個問題,但它只是欺騙屏幕,認爲終端具有XTerm的功能,但它沒有。

Emacs的術語和ansi-term模式將提供屏幕所需的終端功能,但不幸的是,您似乎遇到了這些模式的麻煩。

我想提出的建議應該是查看「emacsclient -t」命令(Emacs的一部分),該命令允許您以與Screen允許的方式類似的方式打開連接到現有Emacs實例的本地框架你重新連接到以前創建的Screen實例。通過這種方式,您可以在本地計算機上配置emacsclient,以便通過TCP重新連接到持久遠程Emacs實例。

1

我不使用屏幕,但也許你可以從你的.bashrc中解決這個問題。我在那裏有一堆有條件的代碼,爲xterm窗口打開顏色,但是不支持其他不支持它的終端。 M-x shell將TERM變量設置爲啞變量,因此您可以測試該變量並相應地設置顏色。

case "$TERM" in 
dumb) 
## non-color settings here 
;; 
xterm) 
## color settings here 
;; 
*) 
## default (maybe you want non-color here?) 
;; 
esac