Emacs
自定義較少的顏色
在 OS X 中使用 less 時,如何使用顯示的東西自定義顏色?當我在 Emacs 中的 ansi-term 內執行較少時,顏色不會很好地呈現出來。
$ less --version less 418 Copyright (C) 1984-2007 Mark Nudelman
對於 OSX,這指的是 Emacs 22.1.1;帶有 Emacs 24 的 Fedora 具有相同的行為。
Emac 的 ansi-term 支持8 種顏色。這就是 ANSI 指定的所有內容,並且“ansi-term”的名稱也很恰當。ncurses 中的
eterm-color
終端描述用於此終端類型。Emacs 設置TERM
為這個值(參見原始碼):(defvar term-term-name "eterm-color" "Name to use for TERM. Using \"emacs\" loses, because bash disables editing if $TERM == emacs.")
如果您覆蓋
TERM
,例如,告訴應用程序它有更多顏色,則不會使用額外的顏色。同樣,忽略終端數據庫的硬編碼應用程序也不能使用額外的顏色。雖然 Emacs 可以在終端中使用超過 8 種顏色,但ansi-term不能。閱讀原始碼,查找
term-ansi-current-color
,發現只有30-37、39、40-47 和 49 的邏輯:;; Foreground ((and (>= parameter 30) (<= parameter 37)) (setq term-ansi-current-color (- parameter 29))) ;; Reset foreground ((eq parameter 39) (setq term-ansi-current-color 0)) ;; Background ((and (>= parameter 40) (<= parameter 47)) (setq term-ansi-current-bg-color (- parameter 39))) ;; Reset background ((eq parameter 49) (setq term-ansi-current-bg-color 0))
您也許可以更改終端使用的調色板,但無法使ansi-term與此不同(即使 Emacs 可以使用 256,它也會使用前 8 種顏色)。
進一步閱讀:
- AnsiTerm (Emacs 維基)
- AnsiTermHints(Emacs 維基)
對於ansi-term以外的 Emacs :
還:
- term.el(ansi-term的 Emacs 原始碼)
- ansi-color.el (Emacs 原始碼)
- term/tty-colors.el(Emacs 原始碼)
- term/xterm.el (Emacs 原始碼)