因为工作需要,现在在云端使用 tmux+终端版 spacemacs,有没有什么办法让 tmux 中显示的 spacemacs 颜色不要这么惨烈?
欢迎大家建言,我对终端下使用 ssh + tmux + emacs 了解基本为零
因为工作需要,现在在云端使用 tmux+终端版 spacemacs,有没有什么办法让 tmux 中显示的 spacemacs 颜色不要这么惨烈?
欢迎大家建言,我对终端下使用 ssh + tmux + emacs 了解基本为零
M-x load-theme
<TAB>
然后都试试
是在云端上用吗?还是本地?我在本地用效果和你的差不多,但是通过 ssh 在云端上用颜色就差很多了
这个截图是本地的,我在远程的机器上也搭过没问题;这个应该只和 Emacs 的主题配置和终端软件的主题配置有关
我的终端连接远程直接使用也没有问题,但是再加一层 tmux 就变丑了
看远程/本地两种情况下,这个函数里定义的颜色是否有差别
tmux 加这个配置试试: set -g default-terminal "screen-256color"
主要就是 Emacs 26+ 和支持 24bits color 的终端,没别的:
- Local (macOS)
|
+ iTerm2 (支持 24bits color)
|
+ Bash ---------------.
| |
+ Remote (Linux) | 设置相同的 terminfo
| |
+ Bash -------'
|
+ Tmux
|
+ Emacs 26+
本地和远程 Emacs 列出的色彩数目是一样的,theme 配色分毫不差。
试了下,只要本地终端支持真彩,然后用您之前在 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主题了
一个字一个字打
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。
如此一番以后,基本上终端里也不会有显示问题了
官方为啥不建议“TERM 环境变量设置为 xterm-256color” ?我没有设置,但是它自己默认的就是xterm-256color,会有什么影响么?
tmux里的 TERM 默认设置为 tmux 或者 screen 。不是说你的终端模拟器里$TERM不要动,是开了 tmux 后 tmux 里的 TERM 不要改成 xterm-256color