代码之家  ›  专栏  ›  技术社区  ›  Jeet

是否有方法确定VIM中是否已经定义了突出显示?

  •  2
  • Jeet  · 技术社区  · 14 年前

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

    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
    

    有办法吗?

    因为这是在一个filetype插件中,所以每次加载或读取缓冲区时都会执行它,所以很可能在用户的“.vimrc”获得源代码之后才会获得源代码,所以如果不进行检查,那么用户在那里或配色方案中提供的任何定义都将被覆盖。

    1 回复  |  直到 14 年前
        1
  •  3
  •   UncleZeiv    14 年前

    有一个函数可以执行此操作,调用 hlexists({name}) :

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

    所以你的代码是:

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