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

ctehm74n  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(213)

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

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

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

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


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

  1. :hi Italic extends Normal term=italic

ffdz8vbo

ffdz8vbo1#

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

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

字符串
因此,

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


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

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

展开查看全部

相关问题