在Vim中有没有一种方法可以确定是否已经定义了一个高亮?

4

对于一个文件类型插件,我想定义并使用默认的自定义高亮名称,例如:

hi CsvColumn guifg=black guibg=NavajoWhite ctermfg=black ctermbg=yellow

然而,我希望允许用户自定义优先于默认设置,因此可以执行以下操作:

if <somehow or other check if 'CsvColumn' has NOT been defined>
    hi CsvColumn guifg=black guibg=NavajoWhite ctermfg=black ctermbg=yellow
fi

有没有办法做到这一点?

由于它是在文件类型插件中,每次加载或读取缓冲区时都会执行,因此很可能在用户的“.vimrc”被执行后再被调用,如果我不进行检查,则用户在那里或色彩方案中提供的任何定义都将被覆盖。

1个回答

6

有一个函数可以做到这一点,叫做hlexists({name}):

结果是一个数字,如果名为{name}的高亮组存在,则该数字为非零。这是当该组以某种方式被定义时。它不一定是在定义了它的高亮时,也可能已被用于语法项目。

所以你的代码应该是:

if hlexists('CsvColumn')
    hi ...
endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接