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

时间:2013-03-26 09:10:16

标签: colors hex vim

我想更改用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功能就像魅力一样,如:

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

即使连接也有效:

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

可能有什么问题?!

2 个答案:

答案 0 :(得分:10)

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

请参阅:help cterm-colors了解已识别的值; orange不是其中之一。

答案 1 :(得分: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(不是很多信息学家)。