um comando de destaque redefine os destaques declarados anteriormente


7

Estou tentando ajustar o destaque no meu vim e estou tentando definir alguns grupos de sintaxe por meio do matchcomando e destacá-los no meu vimrcarquivo, porque esses grupos são genéricos e não pertencem a nenhum arquivo de sintaxe de idioma específico.

Mas minha abordagem funciona apenas para um único destaque, assim que adiciono outra instância de um highlight/matchpar, as declaradas anteriormente não funcionam, apenas a última funciona até eu adicionar outra highlight/match.

Este é o código (a parte relevante) do meu vimrc. Este exemplo funciona:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/

E isso não acontece (apenas o último par de hi/matchfaz):

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
match WhiteSpaceChar / /

Alguém pode me ajudar com isso, como fazê-lo funcionar?

Respostas:


8

De :help :match

Realçar correspondências usando: match são limitadas a três
correspondências (além de: match,: 2match e: 3match estão
disponíveis). O matchadd () não possui essa limitação e,
além disso, torna possível priorizar correspondências.

Então você pode usar:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
2match WhiteSpaceChar / /

Ou:

hi NewLineWin ctermfg=248 guifg=#999999
match NewLineWin /\r\n/
hi WhiteSpaceChar ctermfg=252 guifg=#999999
call matchadd("WhiteSpaceChar", " ")

matchadd()também permite maior flexibilidade, como excluir ou priorizar correspondências. Veja :help matchadd()para mais detalhes.

Como alternativa, verifique o realce da sintaxe: :help syntax


3

Que tal usar o

: sy [ntax] corresponde a {nome do grupo} [{options}] [excludenl] {pattern} [{options}]

:hi NewLineWin ctermfg=248 guifg=#999999
:syntax match NewLineWin /\r\n/
:hi WhiteSpaceChar ctermfg=252 guifg=#999999
:syntax match WhiteSpaceChar / /

Você pode usar qualquer número dessa correspondência ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.