Sum*_*mit 4 vim color-scheme highlight
我想创建一个名称Italic完全相同
Normal但文本为斜体的组。我的Normal组设置为
Normal ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424
Run Code Online (Sandbox Code Playgroud)
我的问题是:
正确的做法是term=italic
按如下方式添加到设置中吗?
hi Italic term=italic ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424
Run Code Online (Sandbox Code Playgroud)
我想以一种通用的方式来做,即定义Italic这样的设置适用于所有颜色方案(以上仅适用于我当前的颜色方案)。有办法实现吗?就像是
hi Italic extends Normal term=italic
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您可以通过脚本创建突出显示组。下面的函数采用三个字符串参数:要高亮显示的组的名称、要创建的组的名称以及包含其他高亮属性(或要覆盖的属性)的字符串。
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
Run Code Online (Sandbox Code Playgroud)
因此,调用
:call ExtendHighlight('Normal', 'Italic', 'term=italic')
Run Code Online (Sandbox Code Playgroud)
创建一个名为的新组Italic,Normal通过term=italic属性字符串扩展突出显示
。
请注意,自定义突出显示组在配色方案切换时保持不变。要纠正此行为,您可以在当前配色方案更改时更新组。
:autocmd ColorScheme * call ExtendHighlight('Normal', 'Italic', 'term=italic')
Run Code Online (Sandbox Code Playgroud)