如何在 Vim 中正确扩展突出显示组?

问题描述 投票:0回答:1

我想创建一个名为

Italic
的突出显示组,就像
Normal
但文本为斜体。目前,我的
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
    
  2. 是否可以以通用方式做到这一点,即定义 新的突出显示组可与任何基础组的风格相匹配 配色方案(以上仅适用于我当前的配色方案)? 类似的东西

    :hi Italic extends Normal term=italic
    
vim highlight color-scheme
1个回答
6
投票

要解决此问题,您可以通过脚本创建突出显示组。 下面的函数采用三个字符串参数: 组的名称 突出显示的基础、要创建的组的名称和字符串 包含要添加或覆盖的突出显示属性。

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
的新组,它扩展了
Normal
突出显示 通过
term=italic
属性字符串。

请注意,自定义突出显示组的配色方案保持不变 交换。要纠正此行为,您可以在以下情况下更新组: 当前配色方案更改:

:autocmd ColorScheme * call ExtendHighlight('Normal', 'Italic', 'term=italic')
© www.soinside.com 2019 - 2024. All rights reserved.