我有一個GUI只vim顏色方案,我想轉換爲256色版本。有沒有一種自動化的方式來做到這一點?將vim GUI顏色方案轉換爲256色vim的自動化方法?
谷歌搜索只發現http://www.vim.org/scripts/script.php?script_id=1809哪些不適合我(顏色結果完全錯誤),並不是真正意義上做一個轉換被保存和重用,而是它的飛行轉換。
我有一個GUI只vim顏色方案,我想轉換爲256色版本。有沒有一種自動化的方式來做到這一點?將vim GUI顏色方案轉換爲256色vim的自動化方法?
谷歌搜索只發現http://www.vim.org/scripts/script.php?script_id=1809哪些不適合我(顏色結果完全錯誤),並不是真正意義上做一個轉換被保存和重用,而是它的飛行轉換。
您可以使用CSApprox這是一個插件將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)
CSApprox還帶有一個快照命令`:CSApproxSnapshot`,它創建一個單獨的colorscheme文件。它也可以[在github上找到](https://github.com/godlygeek/csapprox)。 – fow 2011-01-24 09:55:33