在VIM中,我需要执行一个简单的任务-突出显示“(”和“)”。我可以通过发出两个命令轻松地做到这一点:
:syn match really_unique_name display "[()]"
:hi really_unique_name guifg=#FF0000
但是如果我添加相同的命令(当然没有':')到空的.vimrc并重新启动VIM -“(“和“)”在.cpp文件中不再突出显示。看起来如果我创建/load .cpp文件,VIM会为它加载语法文件,覆盖我的自定义高亮。如何在我的.vimrc文件中配置高光,使其在标准语法定义之后发生,或者不受标准语法定义的影响?
5条答案
按热度按时间jvlzgdj91#
有四个选项(其中两个已由其他人提出):
1.在vimfiles(~/.vim/after/syntax/cpp.vim)中使用
after
结构:1.对当前窗口使用match:
1.对当前窗口使用matchadd(),但这允许您在以后需要时删除单个匹配:
1.安装DrChip的rainbow.vim插件,根据缩进级别,用不同的颜色突出显示括号。
对于这种情况,我建议使用选项1,因为看起来您希望将其作为通用语法的一部分。如果你想使用匹配,并且你希望它们是特定于缓冲区的(而不是特定于窗口的),你需要这样的东西:
有关详细信息,请参阅:
您可能还对我对this question的回答感兴趣,它涵盖了更一般的操作符突出显示。
z0qdvdin2#
将设置放在/syntax/cpp.vim之后的~/.vim/中
nwo49xxi3#
不要使用syn match,只使用match。例如:
match
的优先级高于syn-match(即:它的突出显示将覆盖由syn-match生成的突出显示),并且(行为良好的)语法文件不应该扰乱它。匹配的一个警告是它是每个窗口,而不是每个缓冲区。
如果你需要额外的匹配,你可以使用2 match和3 match。
有关更多信息,请参阅Vim中的
:help :match
。u7up0aaq4#
我通常是这样做的:
au
代表autocmd
。帮助会告诉你更多。cetgtptt5#
对于想要覆盖
hi def link
声明的用户,请使用hi! def link