2011-01-24 14 views
6

Tengo un esquema de color vim solo GUI que me gustaría convertir a una versión de 256 colores. ¿Hay una forma automática de hacer esto?¿Manera automatizada de convertir un esquema de color de la GUI vim para trabajar con 256 vim de color?

Google sólo encontró http://www.vim.org/scripts/script.php?script_id=1809 que no funcionó para mí (los colores resultaron completamente incorrectos) y no está destinado a hacer una conversión para ser guardado y reutilizado, sino que es para la conversión sobre la marcha.

Respuesta

7

Puede usar CSApprox que es un complemento que convierte los esquemas de color de la GUI en esquemas de color de terminal.

Lo he intentado una o dos veces y el resultado fue aceptable.

+3

CSApprox también viene con un comando de instantánea, ': CSApproxSnapshot', que crea un archivo de colorcheme separado. Se puede encontrar [en github] (https://github.com/godlygeek/csapprox) también. – fow

1

estoy usando gnome-terminal y la simple adición de

set t_Co=256 

a mi archivo .vimrc hizo toda la diferencia

0

aquí es un simple script en Python que va a hacer la conversión para usted:

'''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) 
Cuestiones relacionadas