如何在Vim中正确扩展高亮显示组?

ctehm74n  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(155)

我想创建一个名为Italic的突出显示组,与Normal完全相同,但文本为斜体。

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

字符串
我的问题是:
1.将term=italic添加到Normal属性中是正确的方法吗?

:hi Italic term=italic ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424


1.有没有可能以一种通用的方式做到这一点,即,定义新的突出显示组以匹配任何配色方案的基本样式(以上仅适用于我当前的配色方案)?

:hi Italic extends Normal term=italic

ffdz8vbo

ffdz8vbo1#

要解决这个问题,您可以通过脚本创建突出显示组。下面的函数接受三个字符串参数:突出显示所基于的组的名称,要创建的组的名称,以及包含要添加或覆盖的突出显示属性的字符串。

function! ExtendHighlight(base, new, extra)
    redir => attrs | sil! exec 'highlight' a:base | redir END
    let attrs = substitute(split(attrs, '\n')[0], '^\S\+\s\+xxx\s*', '', '')
    sil exec 'highlight' a:new attrs a:extra
endfunction

字符串
因此,

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


创建一个名为Italic的新组,它通过term=italic属性字符串扩展Normal突出显示。
请注意,自定义高亮显示组在颜色方案切换时保持不变。要更正此行为,您可以在当前颜色方案更改时更新该组:

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

相关问题