真彩色(24位)与256色(8位)不同。以下内容来自我的另一个回答:
当我遇到这个问题时,是因为我的vim配色方案使用的是真彩色(24位),而tmux只支持8位(256色)。
以下是检查颜色支持的方法:
首先,使用此Python脚本确保您的默认终端和tmux都支持256种颜色:
import sys
import os
def echo(msg):
os.system('echo -n "' + str(msg) + '"')
def out(n):
os.system("tput setab " + str(n) + "; echo -n " + ("\"% 4d\"" % n))
os.system("tput setab 0")
os.system("tput setaf 16")
for n in range(8):
out(n)
echo("\n")
for n in range(8, 16):
out(n)
echo("\n")
echo("\n")
y=16
while y < 231:
for z in range(0,6):
out(y)
y += 1
echo("\n")
echo("\n")
for n in range(232, 256):
out(n)
if n == 237 or n == 243 or n == 249:
echo("\n")
echo("\n")
os.system("tput setaf 7")
os.system("tput setab 0")
期望的输出是每一行都是不同的颜色,最多只有1行是白色。如果有更多的黑底白字的行,则说明您没有启用256种颜色。
接下来,请使用此bash脚本检查您的终端/tmux是否支持真彩色:
awk -v term_cols="${width:-$(tput cols || echo 80)}" 'BEGIN{
s="/\\";
for (colnum = 0; colnum<term_cols; colnum++) {
r = 255-(colnum*255/term_cols);
g = (colnum*510/term_cols);
b = (colnum*255/term_cols);
if (g>255) g = 510-g;
printf "\033[48;2;%d;%d;%dm", r,g,b;
printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
printf "%s\033[0m", substr(s,colnum%2+1,1);
}
printf "\n";
}'
这个的预期输出如下:
![enter image description here](https://istack.dev59.com/aPKLe.webp)
期望的行为是tmux支持256色但不支持真彩色,您的终端支持两者。如果是这样,并且您的vim配色方案仍然看起来很糟糕,那么很可能您正在使用真彩色配色方案,而tmux无法支持。您可以切换到256色版本或感到遗憾。对于缺乏好消息表示抱歉。