E421:在完全有效的声明中无法识别颜色名称

Pro*_*sch 13 vim hex colors

我想改变用Better Rainbow圆括号着色的括号的颜色.

颜色指定如下:

let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    …
    \ ]
Run Code Online (Sandbox Code Playgroud)

更改插件中颜色的功能如下:

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

E421: Color name or number not recognized: cterm=orange guifg=#cb4b16
Run Code Online (Sandbox Code Playgroud)

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

:exe 'hi default level4c ctermfg=orange guifg=#cb4b16'
Run Code Online (Sandbox Code Playgroud)

即使连接它也有效:

:let foo = '#cb4b16
:exe 'hi default level4c ctermfg=orange guifg='.foo
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?!

Ing*_*kat 11

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

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