2013-01-06 50 views
3

I M-x shell運行試圖產生漂亮顏色輸出的程序。但我得到:用於在M-x外殼內進行vt100/ansi-color轉義的非臨時方式

 
?- true. 
^[[1mtrue.^[[0m 

這顯然不是EMACS的錯,因爲它將環境變量TERM設置爲啞。這只是我所稱的程序,忽略了這些信息。

我知道ansi-color-for-comint-mode-on以特別的方式解決了這個問題:環境變量TERM仍然是愚蠢的。也就是說,解釋這個變量的程序根本不會使用轉義。

是否有一個較少的臨時方法,設置TERM或類似?

+1

目前還不清楚你可能認爲是什麼樣的非臨時解決方案 - 開啓「ansi-color-for-comint-mode」似乎並不是特別的。如果程序堅持在TTY上輸出顏色,你還可以做什麼,但解釋(或忽略)它們? – user4815162342

回答

2

您可以使用M-x ansi-term而不是其他shell(M-x shell,M-x termM-x eshell)。 Ansi-term被設計爲使用ansi顏色現成。更好的是,我建議你使用multi-term(你可以閱讀更多關於它herehere),它基本上支持ansi-term的所有功能,以及在終端之間輕鬆切換和定義哪些鍵盤快捷方式發送到終端的能力,哪些是Emacs捕獲和解釋的。

+1

完美答案! – false

1

也許,在下面的示例行:

(setenv "DISPLAY" ":0") 

(setenv "PATH" (concat "/home/an_user/bin:" 
       (getenv "PATH"))) 

你可以嘗試:

(setenv "TERM" ....) 

或者這是不是你腦子裏想的是什麼?

+0

從天真的用戶角度來看它:逃脫出現!這是一個bug ... – false

+0

是的,想通了,認爲這是值得的拍攝。刪除? – PascalVKooten

+0

你是什麼意思與「啞」確切? – PascalVKooten

5

如果使用M-x ansi-color-for-comint-mode-on進行定製,則應該只需定製ansi-color-for-comint-mode。

+0

換句話說:是否有默認的M-x項的原因? – false

+0

@false - 當我需要Emacs中的全功能終端時,我個人使用'M-x ansi-term'。 「M-x ansi-color-for-comint-mode」與「M-x ansi-term」有什麼不同? –

+0

@ user273158:您的解決方案是最不尋常的解決方案。 – false