Primeiro, um esquema de cores apenas fornece um mapeamento de grupos de realce (principalmente genéricos) para determinadas cores e atributos de texto. Um script de sintaxe fornece regras de análise para identificar elementos de sintaxe. Esses grupos de sintaxe (por exemplo, vimCommand
) são vinculados aos grupos genéricos de destaque (como Statement
).
Embora um esquema de cores personalizado possa realmente fornecer uma cor especial para, digamos, vimCommand
, isso é incomum. Você pode fazer isso em seu próprio esquema de cores, mas também pode executar a substituição :hi link ...
no seu ~/.vimrc
.
Em qualquer caso, você só pode atribuir cores distintas a grupos de sintaxe separados .
O plug-in SyntaxAttr.vim - Mostrar atributos de destaque da sintaxe de caractere sob cursor é semelhante a o trecho na sua pergunta. Com ele e observando a definição de sintaxe em $VIMRUNTIME/syntax/vim.vim
, vejo que if
pertence ao grupo vimNotFunc
(junto com elseif
, return
e while
), enquanto endif
é juntos com todos os comandos do Vimscript em vimCommand
. Assim, qualquer alteração de cor também afetaria muitos outros comandos, o que pode não ser o que você deseja.
Para corrigir isso, você precisaria ajustar as próprias regras de sintaxe, definindo a substituição de comandos :syntax
e colocando-as em ~/.vim/after/syntax/vim.vim
. Isso é possível, mas tedioso (especialmente considerando que você pode querer ter o mesmo para outros idiomas também). Eu prefiro reconsiderar se você não mora com os agrupamentos predefinidos.