自动将vim GUI颜色方案转换为256色vim的方法?

自动将vim GUI颜色方案转换为256色vim的方法?,vim,colors,syntax-highlighting,Vim,Colors,Syntax Highlighting,我有一个仅GUI的vim配色方案,我想将其转换为256色版本。有没有一种自动化的方法可以做到这一点 谷歌搜索只找到了对我不起作用的(颜色结果完全错误),并不是真的要进行保存和重用的转换,而是用于动态转换。你可以使用它,它是一个将GUI颜色方案转换为终端颜色方案的插件 我已经尝试过一两次,结果可以接受。我正在使用gnome终端,只需添加 set t_Co=256 对于我的.vimrc文件,这是一个简单的python脚本,它将为您进行转换: '''add terminal color values

我有一个仅GUI的vim配色方案,我想将其转换为256色版本。有没有一种自动化的方法可以做到这一点

谷歌搜索只找到了对我不起作用的(颜色结果完全错误),并不是真的要进行保存和重用的转换,而是用于动态转换。

你可以使用它,它是一个将GUI颜色方案转换为终端颜色方案的插件


我已经尝试过一两次,结果可以接受。

我正在使用gnome终端,只需添加

set t_Co=256

对于我的.vimrc文件,这是一个简单的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)
“”“将终端颜色值添加到仅GUI的颜色方案”
#用法:vim_colorscheme_convert.py
导入系统
进口稀土
#需要path.py:https://pypi.python.org/pypi/path.py
从路径导入路径
#需要colortrans.py:https://gist.github.com/MicahElliott/719710
从colortrans导入rgb2short
HI_LINE='HI%(名称)s guifg=%(guifg)s guibg=%(guibg)s gui=%(gui)s ctermfg=%(ctermfg)s ctermbg=%(ctermbg)s cterm=%(cterm)s'
f=路径(sys.argv[1])
如果不是f.isfile():
打印('文件不存在:%s“%f”)
系统出口(-1)
输出=[]
对于f.lines()中的行:
m=re.match('hi\s+(?P\w+)\s+.*$,第行)
如果不是m:
#逐字追加非“hi”行
output.append(行)
其他:
值={'name':m.group('name')}
对于val in(“”,'fg','bg'):
m=re.search('gui%s=(?P\s+)'(val,val),第行)
如果不是m:
值['gui%s'%val]='NONE'
值['cterm%s'%val]=“无”
其他:
值['gui%s'%val]=m.group('gui%s'%val)
如果不是值['gui%s'%val].startswith('#'):
值['cterm%s'%val]=值['gui%s'%val]
其他:
值['cterm%s'%val]=rgb2short(m.group('gui%s'%val.strip('#'))[0]
输出.追加(HI_行%值)
#将原文备份并写出新内容
f、 复制(“%s.bak”%f)
f、 写入行(输出)

CSApprox还附带一个快照命令,
:CSApproxSnapshot
,该命令创建一个单独的配色方案文件。也可能是。