Автоматизированный способ конвертировать цветовую схему vim GUI для работы с 256 цветов vim? - PullRequest
6 голосов
/ 24 января 2011

У меня есть цветовая схема vim только с графическим интерфейсом, которую я хотел бы преобразовать в версию с 256 цветами. Есть ли автоматизированный способ сделать это?

Поиск в Google только обнаружил http://www.vim.org/scripts/script.php?script_id=1809, который не работал для меня (цвета оказались совершенно неправильными) и на самом деле не предназначен для преобразования, который будет сохранен и использован повторно, а скорее на лету преобразование.

Ответы [ 3 ]

7 голосов
/ 24 января 2011

Вы можете использовать CSApprox , который является плагином, преобразующим цветовые схемы GUI в терминальные цветовые схемы.

Я пробовал один или два раза, и результат был приемлемым.

1 голос
/ 24 января 2011

Я использую gnome-терминал и просто добавляю

set t_Co=256

в мой файл .vimrc.

0 голосов
/ 15 сентября 2015

вот простой скрипт на python, который сделает преобразование за вас:

'''add terminal color values to a GUI only colorscheme'''

# USAGE: vim_colorscheme_convert.py <colorscheme_file>

import sys
import re

# requires path.py: https://pypi.python.org/pypi/path.py
from path import path

# requires colortrans.py: https://gist.github.com/MicahElliott/719710
from colortrans import rgb2short

HI_LINE = 'hi %(name)s guifg=%(guifg)s guibg=%(guibg)s gui=%(gui)s ctermfg=%(ctermfg)s ctermbg=%(ctermbg)s cterm=%(cterm)s'

f = path(sys.argv[1])
if not f.isfile():
    print('File does not exist: %s' % f)
    sys.exit(-1)

output = []

for line in f.lines():
    m = re.match('hi\s+(?P<name>\w+)\s+.*$', line)
    if not m:
        # append non "hi" lines verbatim
        output.append(line)

    else:
        values = {'name': m.group('name')}
        for val in ('', 'fg', 'bg'):
            m = re.search('gui%s=(?P<gui%s>\S+)' % (val, val), line)
            if not m:
                values['gui%s' % val]   = 'NONE'
                values['cterm%s' % val] = 'NONE'
            else:
                values['gui%s' % val]   = m.group('gui%s' % val)
                if not values['gui%s' % val].startswith('#'):
                    values['cterm%s' % val] = values['gui%s' % val]
                else:
                    values['cterm%s' % val] = rgb2short(m.group('gui%s' % val).strip('#'))[0]

        output.append(HI_LINE % values)

# make a back up of the original and write the new contents
f.copy('%s.bak' % f)
f.write_lines(output)
...