有没有办法确定 Vim 中是否已经定义了高亮?

Jee*_*eet 3 vim syntax-highlighting colors

对于文件类型插件,我想定义并使用默认的自定义突出显示名称,例如:

hi CsvColumn guifg=black guibg=NavajoWhite ctermfg=black ctermbg=yellow
Run Code Online (Sandbox Code Playgroud)

但是,我希望允许用户定义自己而不是默认值,因此可以执行以下操作:

if <somehow or other check if 'CsvColumn' has NOT been defined>
    hi CsvColumn guifg=black guibg=NavajoWhite ctermfg=black ctermbg=yellow
fi
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

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

Unc*_*eiv 5

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

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

所以你的代码是:

if hlexists('CsvColumn')
    hi ...
endif
Run Code Online (Sandbox Code Playgroud)