代码之家  ›  专栏  ›  技术社区  ›  Rook

在vim中定义颜色变量

vim
  •  4
  • Rook  · 技术社区  · 15 年前

    例如,在制作配色方案时,如何将40ffff定义为“uglycolor”(即变量)?

    可能/不可能?

    1 回复  |  直到 15 年前
        1
  •  5
  •   DrAl    15 年前

    使用内置语法是不可能的。但是,如果您使用自己的语法:

    let UglyColor = '#40ffff'
    let Greenish  = '#00dd00'
    let MyStyle   = 'bold'
    exe 'hi Keyword gui=' . MyStyle . ' guifg=' . UglyColor
    exe 'hi Comment guifg=' . Greenish
    

    然后,您可以通过创建字典进一步了解这一点:

    let UglyColor = '#40ffff'
    let Greenish  = '#00dd00'
    let ColourAssignment = {}
    let ColourAssignment['Keyword'] = {"GUIFG": UglyColor, "GUI": "Bold"}
    let ColourAssignment['Comment'] = {"GUIFG": Greenish}
    

    然后用这样的方法处理:

    for key in keys(ColourAssignment)
        let s:colours = ColourAssignment[key]
        if has_key(s:colours, 'GUI')
            let gui = s:colours['GUI']
        else
            let gui='NONE'
        endif
        if has_key(s:colours, 'GUIFG')
            let guifg = s:colours['GUIFG']
        else
            let guifg='NONE'
        endif
        if has_key(s:colours, 'GUIBG')
            let guibg = s:colours['GUIBG']
        else
            let guibg='NONE'
        endif
        if key =~ '^\k*$'
            execute "hi ".key." term=".term." cterm=".cterm." gui=".gui." ctermfg=".ctermfg." guifg=".guifg." ctermbg=".ctermbg." guibg=".guibg." guisp=".guisp
        endif
    

    就是这样 my Bandit colour scheme 工作(有一点逻辑在那里自动生成字符颜色,轻背景颜色和语法文件,以便颜色方案自我突出显示)。请随意看看这个,并窃取功能和格式为您自己的配色方案。