在Vim中扩展突出显示组

时间:2011-03-02 19:23:54

标签: vim highlighting color-scheme

我想创建一个完全相同的组名Italic Normal,但文字以斜体显示。我的群组名称Normal是 设置为

Normal   ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424

我的问题是:

  1. 正确的做法是添加term=italic 如下设置

    hi Italic term=italic ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424
    
  2. 我想以通用的方式做,即我想 定义Italic,使设置适用于所有人 colorscheme(以上内容仅适用于我的具体情况 色彩方案)。有办法实现吗?

    之类的东西
    hi Italic extends Normal term=italic 
    

1 个答案:

答案 0 :(得分:4)

要解决此问题,您可以按脚本创建突出显示组。该 下面的函数有三个字符串参数:要基于的组的名称 突出显示,要创建的组的名称,以及包含其他的字符串 突出显示属性(或要覆盖的属性)。

function! ExtendHighlight(base, group, add)
    redir => basehi
    sil! exe 'highlight' a:base
    redir END
    let grphi = split(basehi, '\n')[0]
    let grphi = substitute(grphi, '^'.a:base.'\s\+xxx', '', '')
    sil exe 'highlight' a:group grphi a:add
endfunction

因此,呼叫

:call ExtendHighlight('Normal', 'Italic', 'term=italic')

创建一个名为Italic的新组,该组扩展Normal突出显示 term=italic属性字符串。

请注意,自定义突出显示组在颜色方案上保持不变 交换。要更正此行为,您可以在当前更新组 颜色方案的变化。

:autocmd ColorScheme * call ExtendHighlight('Normal', 'Italic', 'term=italic')