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

我想最合适的方法是创建自己的colorcheme。但是,我有两个问题。




如果要为使用特定语言的特定语法组设置突出显示,这是否属于我的配色方案?最好将其放在after/syntax/[filetype].vim中?

highlight jsAssignExpIdent cterm=bold gui=bold


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


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

::::: after/syntax/asm.vim :::::

syn match asmHexNumber /\(0x\|$\)[0-9A-Fa-f]\+/
highlight default link asmHexNumber Number




#1 楼

第一个问题

高光定义属于您的配色方案。不论它们使用哪种语言,都将为每个缓冲区加载它们,这完全不是问题。

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

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

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


第二个问题

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

评论


感谢您的确认。但是我担心是否在语法文件中放置了highlight link ...命令,这些命令将在每次加载具有该文件类型的文件时覆盖colorscheme中的设置。在检查该名称是否不存在任何突出显示规则之后,我是否应该只做突出显示链接?

– joeytwiddle
16年9月9日,下午5:53

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

– joeytwiddle
16年1月9日在6:18

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

– joeytwiddle
16年1月9日在6:23

对于给定的突出显示组,用户应该对所用的颜色有最后的判断。为此,在颜色方案中看到特定于语言的突出显示定义并不少见。您仅应在语法脚本中使用突出显示链接...,并让用户根据需要覆盖它。

– romainl
16年1月9日在9:51

我担心的是,如果用户在自己的colorcheme中使用突出显示链接...,那么语法文件稍后可能会使用其自己的突出显示链接...对其进行重置。...我现在看到,好的语法文件可以通过使用突出显示默认链接来避免这种情况...这可能是对我的问题中的asmHexNumber规则的更正。

– joeytwiddle
16年1月11日,下午5:19