【问题标题】:Automated way to convert a vim GUI color scheme to work with 256 color vim?将vim GUI配色方案转换为使用256色vim的自动化方法?
【发布时间】:2011-06-14 09:05:01
【问题描述】:

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

谷歌搜索只发现http://www.vim.org/scripts/script.php?script_id=1809 对我不起作用(颜色完全错误),并不是真的要进行转换以保存和重复使用,而是用于即时转换。

【问题讨论】:

    标签: vim colors syntax-highlighting


    【解决方案1】:

    您可以使用CSApprox,这是一个将GUI配色方案转换为终端配色方案的插件。

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

    【讨论】:

    • CSApprox 还附带一个快照命令:CSApproxSnapshot,它会创建一个单独的颜色方案文件。也可以是found on github
    【解决方案2】:

    我正在使用 gnome-terminal 并简单地添加

    set t_Co=256
    

    对我的 .vimrc 文件有很大影响

    【讨论】:

      【解决方案3】:

      这是一个简单的 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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多