13

我想更改用Better Rainbow Parentheses着色的括号的颜色。

颜色指定如下:

let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    …
    \ ]

在插件中更改颜色的功能是这样的:

func! rainbow_parentheses#toggle()
    if !exists('s:active')
        cal rainbow_parentheses#load(0)
    endif
    let afunc = exists('s:active') && s:active ? 'clear' : 'activate'
    cal call('rainbow_parentheses#'.afunc, [])
endfunc

由于我使用的是 Solarized 我想要特定的十六进制颜色,所以我得到了这个:

let g:rbpt_colorpairs = [
    \ ['yellow',    '#b58900'],
    \ ['orange',       '#cb4b16'],
    \ ['red',    '#dc322f'],
    \ ['magenta',   '#d33682'],
    \ ['violet',    '#6c71c4'],
    \ ['blue',     '#268bd2'],
    \ ['cyan', '#2aa198'],
    …
    \ ]

然而,在重新启动并打开插件时,我多次收到此错误:

E421: Color name or number not recognized: cterm=orange guifg=#cb4b16

更好的是,在函数中手动执行 :exe 就像一个魅力,比如:

:exe 'hi default level4c ctermfg=orange guifg=#cb4b16'

即使连接它也有效:

:let foo = '#cb4b16
:exe 'hi default level4c ctermfg=orange guifg='.foo

可能有什么问题?!

4

2 回答 2

15

问题不在于 GUI RGB 颜色,而在于cterm=orange定义。

查看:help cterm-colors公认的价值观;orange不是其中之一。

于 2013-03-26T09:24:34.450 回答
0
function! Gfagivesorange()
         colors morning
         hi Spellbad   term=standout cterm=bold ctermfg=Red ctermbg=White
         hi Spellbad   term=standout cterm=NONE ctermfg=Orange ctermbg=White
         call Myhi()
endfunc

这个函数会给你橙色(红色不是粗体)。这是 NCURSES 的事情,但人们没有掌握或了解 NCURSES(信息学家不多)。

于 2015-09-25T11:41:01.190 回答