Emacs

自定義較少的顏色

  • July 23, 2016

在 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 種顏色)。

進一步閱讀:

對於ansi-term以外的 Emacs :

還:

引用自:https://unix.stackexchange.com/questions/113852