emacs 在 iterm2 中配色非常奇怪

如图:和原来的配色完全不一样,好难看。我看 iterm2 也是真彩色呀

第一张是 aurora,左边是 iterm2 ssh 后的,右边是本地 GUI 的

就是某个 theme 在终端和 GUI 下完全不同,而且很多都是和图上那种白颜色的一样,有遮盖效果,好难受

换个主题。。。。

您意思是,有一些主题确实会这样?

你这可能是 Emacs 没有使用任何 theme,直接继承 iTerm2 的配色。

运行 emacs -Q 看看是不是同样的效果。

是的,有些主题对TUI支持不好。试试doom-one

1 个赞

$TERM 变量设置了吗

你需要真彩色配置,不然就是 256 色的。是不是 256 色很容易验证,比如 TUI 和 GUI 的显示不同。

export TERM=xterm-direct

您好,是一样的

感觉解决了,我认为是 term 支持真彩色的,但是 emacs 没有适配好?anyway,我设置 export TERM=xterm-direct 就好很多了,下图左侧是 xterm-256+ssh,右侧是 xterm-256+ssh:

真彩色和 xterm-256 不一样吗(不太懂) 另外,我在 iterm2 本地(macOS)和 ssh 后运行测试脚本,打印出来颜色相差好多啊:

iTerm2 支持真彩色,但是 Emacs 没有以真彩色的方式启动,还需要一些配置。我不记得当初在哪找到的了,我记录了下来,在我这里是 OK 的,你可以试试看:https://workflowy.com/s/tui-terminal-color/UjlCsE53l6H3yVpt

1 个赞

感谢,我仔细看了下https://www.gnu.org/software/emacs/manual/html_node/efaq/Colors-on-a-TTY.html,似乎是 emacs27 之后自动探测,只需要我们用 xterm-direct

1 个赞

以前iTerm上有这个问题,不知道从哪个Emacs版本开始就没有了(搭配Doom);现在在WSL上又遇到这个了。典型的主题例子是Solarized Light

我解决了似乎,利用 xterm-direct 启动

搭车问一个问题。我在windows wsl ubuntu22.04中用这个可以。但是在centos7.8下用这个,启动emacs就提示出错。 这个这是还和os有关? 怎么才能让centos7.8下生效呢?

方法1 升级 ncurses 到最新,如果无效,尝试下一步

方法2 升级系统到最新,如果不想升级或还是无效,尝试下一步

方法3 将下方代码保存为 xterm-direct.terminfo:

xterm+direct|xterm with direct-color indexing (building-block),
	RGB,
	colors#0x1000000, pairs#0x10000, CO#8,
	initc@, op=\E[39;49m,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e48:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e38:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
	setb@, setf@,
xterm-direct|xterm with direct-color indexing,
	use=xterm+direct, use=xterm,

然后 tic -x -o ~/.terminfo xterm-direct.terminfo

成功后,可以删除 xterm-direct.terminfo

多谢。发现centos 7.8中 toe -a 没有xterm-direct。是这个原因。

升级系统是不可能了,我回头试试这段代码。