自定义突出显示规则在哪里?


11

有时,我想用自己的首选项覆盖默认语法,以突出显示颜色和样式。

我认为最合适的方法是创建自己的颜色方案。但是我有几个问题。

  1. 如果我想为使用特定语言的特定语法组设置突出显示,这是否属于我的colorcheme,还是最好将其放置在after/syntax/[filetype].vim

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    在colorscheme中放置晦涩的特定于语言的规则似乎有点奇怪,因为无论我使用哪种语言,它们都会被加载,但是在语法文件中放置突出显示规则似乎更糟。

  2. 有时,我会在中为特定语言创建新的语法规则after/syntax/[filetype].vim。如果其他用户想要使用这些扩展,是否适合在我那里提供链接到常见默认突出显示组的默认突出显示规则?如果另一个用户想要覆盖该突出显示颜色,他们应该怎么做?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

Answers:


9

第一个问题

高光定义属于您的色彩设计。无论使用哪种语言,都为每个缓冲区加载它们,这根本不是问题。

如果您不想编辑颜色方案,可以将这些突出显示定义放在plugin/myhighlights.vim

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

第二个问题

您的示例正是您应该如何做以及每个语法脚本如何做。此方法可让插件开发人员定义默认的默认设置,而无需强迫用户使用特定的颜色。


感谢您的确认。但是我担心是否将highlight link ...命令放入语法文件中,以便每次加载具有该文件类型的文件时,这些命令都会覆盖colorscheme中的设置。我应该highlight link ...在检查该名称不存在突出显示规则后才做吗?
joeytwiddle '16

啊,我不用担心。Vim文档说:如果{from-group}已经有突出显示设置,则不会建立链接,除非'!' 给出。对于源文件中的“:highlight链接”命令,您不会收到错误消息。这可用于跳过具有设置的组的链接。
joeytwiddle

但是对于需要调整颜色方案的人,highlight link颜色方案highlight link中的a 稍后可能会在语法文件中被a覆盖。为了避免这种情况,可以使用实际参数(ctermbg,guifg等)代替链接。
joeytwiddle

对于给定的高亮组,用户应该最后决定要使用哪种颜色。为此,在颜色方案中看到特定于语言的突出显示定义并不少见。您只应highlight link ...在语法脚本中使用,并让用户根据需要覆盖它。
romainl

我担心的是,如果用户highlight link ...在其colorcheme中使用,则语法文件稍后可能会使用自己的重置它highlight link ...。我现在看到,好的语法文件可以通过使用来避免这种情况highlight default link ...。那可能应该是asmHexNumber我所问规则的更正。
joeytwiddle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.