繁体   English   中英

iTerm2不渲染vim真彩色colorscheme

[英]iTerm2 not rendering vim true color colorscheme

尽管看起来正确,但Vim(v 8.0.1283)在iTerm2(v 3.2.4)中绘制了8位颜色。 $TERM设置正确:

$ echo $TERM
xterm-256color

这是我的~/.vimrc的相关部分:

set background=dark
set termguicolors
colorscheme deep-space

这个主题的仓库没有指向vimrc的任何进一步的配置。 更令人困惑的是,这些主题是从带有vim-plug的rafi / awesome-vim-colorschemes中提取的, 其中许多主题都完美地工作了。 文档说该插件需要真实的颜色(我假设是256)。

我尝试重新启动和采购vimrc,三重检查拼写和env变量,重新阅读该配色方案的文档,但似乎无法使它成败。 有什么明显的我想念的地方吗?

真彩色(24位) 不是 256色(8位)。 从我的另一个答案复制:

当我遇到这个问题时,是因为我的vim colorscheme使用的是truecolor(24位),而tmux仅支持8bit(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是否支持truecolor:

#!/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";
}'

该代码的预期输出如下所示:

在此处输入图片说明

预期的行为是tmux将支持256色,但不支持truecolor,并且您的终端将同时支持这两种颜色。 如果这是真的,并且您的vim colorscheme看起来仍然很糟,则很可能您正在使用truecolor colorscheme,而tmux无法支持。 您可以切换到256色版本,也可以为此感到难过。 很抱歉缺少好消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM