在 VIM 中,我需要执行一个简单的任务——突出显示“(”和“)”。我可以通过发出两个命令轻松地做到这一点:
:syn match really_unique_name display "[()]"
:hi really_unique_name guifg=#FF0000
但是如果我添加相同的命令(当然没有 ':')来清空 .vimrc 并重新启动 VIM - "("和 ")"在 .cpp 文件中不再突出显示。似乎如果我创建/加载 .cpp 文件,VIM 会为其加载覆盖我自定义突出显示的语法文件。如何在我的 .vimrc 文件中配置高亮显示,使其在标准语法定义之后发生或不受标准语法定义的影响?
最佳答案
有四个选项(其中两个已被其他人建议):
after
vimfiles 中的结构(~/.vim/after/syntax/cpp.vim)::help after-directory
:match really_unique_name "[()]"
:call matchadd('really_unique_name', "[()]")
" Or
:let MyMatchID = matchadd('really_unique_name', "[()]")
" and then if you want to switch it off
:call matchdelete(MyMatchID)
对于这种情况,我建议使用选项 1,因为您似乎希望将其作为通用语法的一部分。如果您想使用匹配项并且希望它们是特定于缓冲区的(而不是特定于窗口的),您将需要以下内容:
function! CreateBracketMatcher()
call clearmatches()
call matchadd('really_unique_name', "[()]")
endfunc
au BufEnter <buffer> call CreateBracketMatcher()
有关更多信息,请参阅:
:help after-directory
:help :match
:help matchadd()
:help matchdelete()
:help clearmatches()
:help function!
:help autocmd
:help autocmd-buffer-local
:help BufEnter
您可能也对我对 this question 的回答感兴趣,它涵盖了更一般的运算符突出显示。
关于vim - 如何覆盖vim中的默认语法高亮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211588/