iTerm2无法呈现vim真彩色配色方案

5

Vim(版本号为8.0.1283)在iTerm2(版本号为3.2.4)中显示8位颜色,尽管配置看起来是正确的。 $TERM 已正确设置:

$ echo $TERM
xterm-256color

以下是我 ~/.vimrc 的相关部分:
set background=dark
set termguicolors
colorscheme deep-space

这个主题的repo没有指向vimrc的进一步配置。更令人困惑的是,这些主题是通过vim-plug从rafi/awesome-vim-colorschemes中获取的,而其中许多主题都能完美地工作。文档说插件需要真彩色(我假设是256)。我已经尝试过重新启动和源化vimrc,三次检查拼写和环境变量,重新阅读颜色方案的文档,但似乎无法理解。这里有什么明显的遗漏吗?
1个回答

5

真彩色(24位)与256色(8位)不同。以下内容来自我的另一个回答:

当我遇到这个问题时,是因为我的vim配色方案使用的是真彩色(24位),而tmux只支持8位(256色)。

以下是检查颜色支持的方法:

首先,使用此Python脚本确保您的默认终端和tmux都支持256种颜色:

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <johannes@zellner.org>
# modified by mac@calmar.ws to fit my output needs
# modified by crncosta@carloscosta.org to fit my output needs

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")

# normal colors 1 - 16
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是否支持真彩色:

#!/bin/bash
# Based on: https://gist.github.com/XVilka/8346728

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

期望的行为是tmux支持256色但不支持真彩色,您的终端支持两者。如果是这样,并且您的vim配色方案仍然看起来很糟糕,那么很可能您正在使用真彩色配色方案,而tmux无法支持。您可以切换到256色版本或感到遗憾。对于缺乏好消息表示抱歉。

感谢您的回答。运行脚本后,显示我的终端支持真彩色和256色。但我会编辑我的问题标题以更准确地描述。 - RangerRanger
然而,好消息是tmux仍然可以支持真彩色:https://medium.com/@dubistkomisch/how-to-actually-get-italics-and-true-colour-to-work-in-iterm-tmux-vim-9ebe55ebc2be - A S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接