iTerm2 не рендерит vim true color colorscheme - PullRequest
0 голосов
/ 16 ноября 2018

Vim (v 8.0.1283) рисует 8-битный цвет в iTerm2 (v 3.2.4), несмотря на то, что конфигурация кажется правильной. $TERM установлено правильно:

$ echo $TERM
xterm-256color

Вот соответствующий раздел моего ~/.vimrc:

set background=dark
set termguicolors
colorscheme deep-space

репо для этой темы не указывает на дальнейшие настройки для vimrc. Еще более запутанно, темы взяты из rafi / awesome-vim-colorschemes с vim-plug, и многие из этих тем работают отлично. Документы говорят, что плагин требует истинного цвета (который я предполагаю, 256).

Я пытался перезапустить и использовать vimrc, трижды проверенные правописания и переменные env, перечитать документацию по цветовой схеме, но, похоже, не могу понять, что это из головы или хвоста. Есть ли что-то очевидное, что я здесь упускаю?

1 Ответ

0 голосов
/ 16 ноября 2018

Истинный цвет (24 бита) равен , а не 256 цветов (8 бит). Скопировано из другого моего ответа:

Когда у меня возникла эта проблема, это было потому, что моя vim colorscheme использовала truecolor (24 бит), а tmux поддерживает только 8 бит (256 цветов).

Вот методы проверки поддержки цвета:

Во-первых, убедитесь, что у вас есть поддержка 256 цветов в терминале по умолчанию и tmux с этим скриптом python:

#!/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 цветов не включены.

Далее, проверьте, есть ли у вас поддержка truecolor в вашем терминале / tmux с помощью этого скрипта bash:

#!/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 цветов, но не truecolor, и что ваш терминал будет поддерживать оба. Если это так, и ваша vim colorscheme по-прежнему выглядит плохо, очень вероятно, что вы используете truecolor colorcheme, и tmux не может это поддерживать. Вы можете переключиться на версию с 256 цветами или просто расстроиться из-за этого. Извините за отсутствие хороших новостей.

...