Terminal
基於 $TERM 環境變數的 emacs 顏色
我想知道是否可以製作 emacs,在 gnu 螢幕或 tmux 會話中執行時,使用與 when 相同的顏色
TERM=xterm
。在 gnu 螢幕或 tmux 會話中,TERM=screen
與 when 相比,emacs 使用一組不同的顏色TERM=xterm
。例如,當 時
TERM=xterm-256color
,前景色font-lock-comment-face
為“Firebrick”。但是當 時TERM=screen-256color
,它被設置為’chocolate1’。為了使 tmux 正常工作,必須將 TERM 變數設置為 screen 或一些衍生變數,因此重置 TERM 對我來說不是一個選項。
的定義
font-lock-comment-face
包括針對不同顏色支持的情況的許多變體。
chocolate1
當至少有 88 種顏色可用且“背景”為“深色”時,使用該變體。Firebrick
當至少有 88 種顏色可用且“背景”為“淺色”時,使用該變體。差異是由於某些程式碼對以
xterm
、rxvt
、dtterm
和開頭的 TERM 值賦予了特殊含義eterm
:它認為它們具有“淺色”背景。您應該能夠將
frame-background-mode
*自定義為其light
值以始終使用“淺色”顏色變體。如果您的 Emacs 還不夠新,無法擁有自己的
term/screen.el
,那麼您還需要為自己調整一個,以進行適當的顏色調整呼叫。您可以使用Emacs trunk中的那個,或者我有一個 Gist,其中包含一個.emacs.d/lisp/term/screen.el
(帶有一些額外的位來辨識tmux的xterm-keys
選項提供的修飾符+箭頭/Home/End 序列),以及.emacs
讓它自動載入所需的修改.當然,仍然可能有其他程式碼直接檢查 TERM 值並對
screen
- 和 -類似的值執行不同的操作xterm
……
- Mx 自定義可變幀背景模式