在Linux上,Emacs/xterm颜色问题的烦恼

9

我在本地Linux系统和远程集群的登录节点上都使用控制台窗口中的emacs。我经常使用emacs,并且已经在我的.emacs文件中将前景色设置为白色,如下所示:

(set-foreground-color "white")
(set-background-color "black")

然而,当我运行emacs时,前景不是白色的; 它是灰色的,非常难以阅读。在我的Mac上,具有相同设置的控制台窗口中的emacs显示为适当的白色。但是在两个Linux框中,在konsole和xterm中,它是灰色的。
如果有关系的话,我已将TERM设置为xterm-color,桌面正在运行RHEL 5,而群集节点正在运行RHEL 4(CentOS)。
这是否是Linux设置终端颜色的默认值?如何使白色变为白色?
注意:这是使用控制台emacs,而不是X下的emacs。如果您设置了DISPLAY,请使用“emacs -nw”。
6个回答

11

在我的 Emacs 中(在终端,而不是 X 下运行),颜色 brightwhite 看起来还可以。在 RHEL5 上,我将 TERM 环境变量设置为 xterm-256color。如果它正常工作,您应该能够运行 这些脚本 并看到 256 色输出。在 Emacs 下,当您执行 M-x list-colors-display 时,您应该看到一个相当平滑的颜色梯度(没有明显重复的颜色)。如果没有,请检查是否缺少正确的 termcap 条目(尝试安装 libtermcap-devel 包)。

如果我将 TERM 更改为 xterm-color,则在 list-colors-display 的输出中,brightwhite 变得有点灰色。

关于 RHEL4,我不确定。


2

关于:

(set-foreground-color "brightwhite")

作为回应评论: 在emacs中,运行M-x list-colors-display命令,这将显示emacs认为与您的终端可用的所有颜色。

这对你管用吗?我试过了,但它给我的是黑色菜单和状态栏,并且文本显示为我的终端的默认前景颜色(绿色)。也许我没有“brightwhite”。 - Todd Gamblin

2

我做了一些实验,你可以在emacs中设置控制台颜色,但是你只能使用这个调色板:

black                    blue                                         
cyan                     green                                        
magenta                  red                                          
white                    yellow    

你得到的白色会有些灰暗;完全明亮的白色是为粗体文本保留的。因此,如果你运行

M-x facemenu-set-bold

稍后插入的文本将会以粗体(鲜白色)显示。

我试图强制使用默认字体加粗,但没有成功。 (我并不真正理解emacs中的字体是如何工作的。)


“但是你只能使用这个调色板” - 这并不完全正确,如果你的终端设置正确,Emacs 支持 256 种颜色。请参见屏幕截图 @ http://seanbright.com/e256.png。 - Sean Bright
@Sean:在https://dev59.com/qkfRa4cB1Zd3GeqP5gEH上赚取一些声望,以便我可以设置我的Linux X终端,使Emacs可以访问256种颜色。 - Norman Ramsey

2
如果只是在控制台版本中使用反转视频,那是否足够好呢?
$ emacs -nw -rv

1

看起来你只设置了前景色。

(set-foreground-color "white")
(set-foreground-color "black")

我相信你是指后者上的set-background-color

当我以以下方式运行Emacs时,我可以确认这一点:

$ emacs -nw -bg black -fg white

也是。


抱歉,那是一个打错的字!已经更新了上面的内容。 - Todd Gamblin
这篇回答不应该被踩。它是针对OP的错别字问题做出的回应。 - Sean Bright

1
我发现终端模式下的颜色很奇怪,最终追踪到是字体面板的自定义设置有问题。我的设置类似于这样:

(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:inherit nil :stipple nil :background "#000a00" :foreground "#ffffed" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 113 :width normal :foundry "unknown" :family "Droid Sans Mono")))))

我删除了前景和背景属性,一切都开始看起来很好。


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