为 tmux 设置真彩色

最近在 tmux 中使用 vim onedark theme,总是觉得怪怪的,黑色显示偏灰。无意中发现 joshdick/onedark.vim 中提到需要为 tmux 设置真彩色。

1
2
3
4
- Plain ASCII
- ANSI escape codes: 16 color codes with bold/italic and background
- 256 color palette: 216 colors + 16 ANSI + 24 gray (colors are 24-bit)
- 24-bit truecolor: "888" colors (aka 16 million)

检查终端是否支持真彩色,可以使用脚本 24-bit-color.sh

bash ./24-bit-color.sh 如果终端颜色是连贯的则支持了真彩色,如果颜色是分块的则没有支持。

修改 ~/.tmux.conf 加上两行

1
2
set -g default-terminal "tmux-256color"
set-option -ga terminal-overrides ",${TERM}:Tc"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
default-terminal terminal
Set the default terminal for new windows created in this session - the default value of the TERM environment variable. For tmux to work correctly, this must be set to
‘screen’, ‘tmux’ or a derivative of them.


terminal-overrides[] string
Allow terminal descriptions read using terminfo(5) to be overridden. Each entry is a colon-separated string made up of a terminal type pattern (matched using
fnmatch(3)) and a set of name=value entries.

For example, to set the ‘clear’ terminfo(5) entry to ‘\e[H\e[2J’ for all terminal types matching ‘rxvt*’:

rxvt*:clear=\e[H\e[2J

The terminal entry value is passed through strunvis(3) before interpretation.

要让 tmux 重新加载 ~/.tmux.conf 需要退出所有的 tmux 进程后,重新执行 tmux 。最后,检查你的 tmux 是否开启了真彩色,可以使用下面的命令行:

1
2
tmux info | grep Tc
227: Tc: (flag) true

参考

Adding 24-bit TrueColor RGB escape sequences to tmux - Suraj N. Kurapati , 29 January 2016
https://sunaku.github.io/tmux-24bit-color.html#usage


为 tmux 设置真彩色
https://usmacd.com/cn/tmux_truecolor/
作者
henices
发布于
2024年6月12日
许可协议