Emacs ANSI-term 背景颜色

7

我在更改ansi-term(以及term - 但shell没问题)的背景颜色时遇到了问题。它可以从输出中正确显示颜色,但输出的背景颜色始终为白色。不是整个缓冲区,而只是实际输出字符下方的部分。如果我执行以下操作:

(add-hook 'ansi-term-mode-hook
    (lambda ()
        (set-background-color "purple")))

这会改变缓冲区的背景颜色,但输出只是用自己的背景颜色——白色覆盖它。

我还试图找到它正在使用的面孔,所以我可以通过执行C-u C-x =来获取有关点处面孔的信息进行自定义——这对其他所有内容都有效,甚至指出了你要更改的位置,非常好……但在ansi终端中,我得到了这个:

    character: m (109, #o155, #x6d)
preferred charset: ascii (ASCII (ISO646 IRV))
   code point: 0x6D
       syntax: w    which means: word
     category: .:Base, a:ASCII, l:Latin, r:Roman
  buffer code: #x6D
    file code: #x6D (encoded by coding system utf-8)
      display: by this font (glyph code)
xft:-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1 (#x50)

Character code properties: customize what to show
  name: LATIN SMALL LETTER M
  general-category: Ll (Letter, Lowercase)

There are text properties here:
  face                 (:background "white" :foreground "black")

[back]

我不知道这是在哪里设置的。 face (:background "white" :foreground "black")

另外,我使用过多个主题,我知道它们都有ansi-term-color-vector(例如zenburn等)。我已经查看了customize-face中的每个示例,但仍然找不到它。

有没有想法如何覆盖/设置此内容,使其与其他内容一样具有透明(或未设置)的背景?

感谢您的帮助。

2个回答

8

我不确定我是否理解你的设置,但你可以尝试设置:

(setq term-default-bg-color "#211E1E")
(setq term-default-fg-color "#AAAAAA")

从零开始尝试,打开一个新的终端并检查。


3
谢谢 - 我可以将其标记为答案(我可能已经删除了 SO 设置的 cookie),但这是正确的。 实际上,我输入了 (setq term-default-bg-color nil) ,以获得我想要的效果。 非常感谢,不确定如何为您标记。 - user397544
我的终端是Emacs中唯一有白色背景的地方,你解决了这个问题!非常感谢! - fakedrake

2
user178399在10年前的回答完全正确。从v24.3开始,这对变量已被弃用,而应该自定义term面。事实上,在Emacs 25.6(Debian 10发行版,x64)中,设置这些变量不再有任何效果,而更改面的效果则有。
如果(或者说当,因为变量已经失效了,至少在这里是这样),不要忘记从您的初始化文件(通常是~/.emacs)中删除它们的设置或重置它们的自定义。
提醒一下,如果您正在搜索升级后默认前/背景设置突然变得愤怒和不听话的原因......
令我困惑的是,我仍然需要在钩子中更改ansi-term缓冲区的背景,以匹配term面的背景,就像OP在10年前所做的那样,否则我会遇到这个问题。失败!

enter image description here

哦,现在有Emacs.SE了,这是一个更好的针对Emacs相关问题的地方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接