tmux 下使用 spacemacs 颜色过于惨烈了,有什么办法?

因为工作需要,现在在云端使用 tmux+终端版 spacemacs,有没有什么办法让 tmux 中显示的 spacemacs 颜色不要这么惨烈?

欢迎大家建言,我对终端下使用 ssh + tmux + emacs 了解基本为零

M-x load-theme

<TAB>

然后都试试

1 个赞

我用的 Spacemacs Dark,感觉还可以

1 个赞

是在云端上用吗?还是本地?我在本地用效果和你的差不多,但是通过 ssh 在云端上用颜色就差很多了

这个截图是本地的,我在远程的机器上也搭过没问题;这个应该只和 Emacs 的主题配置和终端软件的主题配置有关

我的终端连接远程直接使用也没有问题,但是再加一层 tmux 就变丑了

看远程/本地两种情况下,这个函数里定义的颜色是否有差别

1 个赞

tmux 加这个配置试试: set -g default-terminal "screen-256color"

1 个赞

主要就是 Emacs 26+ 和支持 24bits color 的终端,没别的:

- Local (macOS)
    |
    + iTerm2 (支持 24bits color)
        |
        + Bash ---------------.
            |                 |
            + Remote (Linux)  | 设置相同的 terminfo
                |             |
                + Bash -------'
                    |
                    + Tmux
                        |
                        + Emacs 26+

本地和远程 Emacs 列出的色彩数目是一样的,theme 配色分毫不差。

2 个赞

试了下,只要本地终端支持真彩,然后用您之前在 https://emacs-china.org/t/topic/2719 提到的方法设置好远端的 terminfo 就好了。 注意不要 copy. archlinux 放在 ~/.terminfo/x/ 下, mac 放在 ~/.terminfo/78 下——用了ascii 编码…… 这样子中间就算有没有设置 terminfo 的跳板机也是可以的。

另外,想问下,这个图是怎么画出来的呀?

tmux.conf

set-option -sa terminal-overrides ',st-256color:RGB'

set -g default-terminal "tmux-256color"

把st-256color 改成你的 终端的 TERM变量,比如 xterm ,kitty什么的就可以用终端的spacemacs主题了

1 个赞

一个字一个字打

echo $TERM

如果结果是Screen 可以改成

TERM=xterm-256color emacs

如果ok写到.bashrc中固化下来

在emcs里面检查颜色数量可以用M-x list-color-display

忍耐。。。。。。

在远端的命令行通过echo $TERM显示xterm-256color,于是 在远端的.tmux.conf加入了这两行,解决了显示问题,谢谢!

set-option -sa terminal-overrides ',st-256color:RGB'
set -g default-terminal "xterm-256color"

不建议把 tmux 的终端的 TERM 环境变量设置为 xterm-256color

这是官方文档明确说明不建议的,

应把远端的 tmux-conf 设置如下:


set -g default-terminal "tmux-256color"

set-option -sa terminal-overrides ',st-256color:RGB'

在这里 st-256color对应的是使用的终端模拟器的 $TERM 的名字,使用其他的终端的要改成 alacritty, kitty 之类的。

同时在远端的 bashrc 里把环境变量 COLORTERM 设置为 truecolor。

如此一番以后,基本上终端里也不会有显示问题了

3 个赞

官方为啥不建议“TERM 环境变量设置为 xterm-256color” ?我没有设置,但是它自己默认的就是xterm-256color,会有什么影响么?

tmux里的 TERM 默认设置为 tmux 或者 screen 。不是说你的终端模拟器里$TERM不要动,是开了 tmux 后 tmux 里的 TERM 不要改成 xterm-256color