修改Emacs中光标下的面,包括ansi-term

时间:2013-01-24 20:55:46

标签: emacs ipython emacs-faces

有没有办法轻松修改光标下的font-face

例如,下面的蓝色文字难以阅读:

enter image description here

以上是

的输出
ipython --color "Linux"

ansi-term tango-dark Emacs 24.1上运行,(load-theme 'tango-dark t)

如果我在上面的图片上运行what-cursor-position(此处描述:Get font face under cursor in Emacs),我会得到:

             position: 30385 of 30477 (100%), column: 22
            character: / (displayed as /) (codepoint 47, #o57, #x2f)
    preferred charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x2F
               syntax: _    which means: symbol
             category: .:Base, a:ASCII, l:Latin, r:Roman
          buffer code: #x2F
            file code: #x2F (encoded by coding system nil)
              display: by this font (glyph code)
    xft:-unknown-DejaVu LGC Sans Mono-bold-normal-normal-*-11-*-*-*-m-0-iso10646-1 (#x12)

Character code properties: customize what to show
  name: SOLIDUS
  old-name: SLASH
  general-category: Po (Punctuation, Other)
  decomposition: (47) ('/')

There are text properties here:
  face                 (:weight bold :foreground "blue2" :background unspecified)

如何修改此字体?

如果您想知道IPython只支持三种颜色集:

  • Nocolor
  • Linux(我上面使用的那个)
  • LightBG(适用于浅色背景)

更新

我认为font-lock-string-face是一个不同的面孔:

enter image description here

事实上,我认为这不是IPython用来表示字符串的面孔,而是python-mode用来表示具有常规python代码的缓冲区中字符串的面(在tango-dark中) - 请参阅下面 - 。

enter image description here

3 个答案:

答案 0 :(得分:3)

M-x customize-face,将光标放在要修改的特定内容上。另外还有set-face-foregroundset-face-background,具体取决于你想要做什么(有时候更改背景颜色以使字体更容易在终端中看到)。

所以我检查了下面评论中提到的IPython,ipython.el没有突出显示它自己。着色全部使用终端ANSI颜色完成。在某些终端中,可以通过.bashrc.zshrc或任何shell更改颜色,并可能从M-x term运行它。通过Emacs本身,我无法看到改变它的方法,因为IPython只有3个默认方案,并且没有办法在我看到的情况下指定任何具体内容。

答案 1 :(得分:3)

可以更改ansi颜色的显示方式:

(defface term-color-red
    '((t (:foreground "#ff0000" :background "#ff0000")))
  "Unhelpful docstring.")

以下是整个群体:

term-color-red
term-color-green
term-color-black
term-color-yellow
term-color-blue
term-color-magenta
term-color-cyan
term-color-white

答案 2 :(得分:1)

sabof一样,我认为您看到的颜色是由ansi-term设置的,而不是由Emacs的颜色主题设置的。

配置这些颜色的方法包括设置ansi-term-color-vector变量。查看term.el中的代码有助于理解此变量的含义:它包含8 ansi color escape codes的颜色规范:

(defvar ansi-term-color-vector
  [unspecified "black" "red3" "green3" "yellow3" "blue2"
   "magenta3" "cyan3" "white"])

这是我的设置(因为我也使用黑暗的探戈主题,这可能适合你):

;; ANSI Term colors
(setq ansi-term-color-vector
      [unspecified "#000000" "#b21818" "#18b218" "#BE5F00"
                   "#6D85BA" "#b218b2" "#18b2b2" "#b2b2b2"])