当前位置:  开发笔记 > 开发工具 > 正文

如何在vim中覆盖默认语法高亮?

如何解决《如何在vim中覆盖默认语法高亮?》经验,为你挑选了2个好方法。

在VIM中,我需要执行一个简单的任务 - 突出显示"("和")".我可以通过发出两个命令轻松地做到这一点:

:syn match really_unique_name display "[()]"
:hi really_unique_name guifg=#FF0000

但是如果我添加相同的命令(当然没有':')来清空.vimrc并重新启动VIM - "("和")"在.cpp文件中不再突出显示.看来,如果我创建/加载.cpp文件,VIM会加载语法文件,覆盖我的自定义高亮显示.如何在我的.vimrc文件中配置高亮显示,以便它在标准语法定义之后发生,或者不受标准语法定义的影响?



1> DrAl..:

有四种选择(其中两种已被其他人建议):

    after在vimfiles中使用结构(〜/ .vim/after/syntax/cpp.vim):

    :help after-directory
    

    使用匹配当前窗口:

    :match really_unique_name "[()]"
    

    再次对当前窗口使用matchadd(),但如果您以后需要,则可以删除单个匹配:

    :call matchadd('really_unique_name', "[()]")
    " Or
    :let MyMatchID = matchadd('really_unique_name', "[()]")
    " and then if you want to switch it off
    :call matchdelete(MyMatchID)
    

    安装Dr Chip的rainbow.vim插件,根据缩进级别获得不同颜色的支撑突出显示.

对于这种情况,我建议选项1,因为它看起来像你想要使它成为一般语法的一部分.如果你想使用匹配并且你希望它们是缓冲区特定的(而不是特定于窗口的),你需要这样的东西:

function! CreateBracketMatcher()
    call clearmatches()
    call matchadd('really_unique_name', "[()]")
endfunc
au BufEnter  call CreateBracketMatcher()

有关更多信息,请参阅:

:help after-directory
:help :match
:help matchadd()
:help matchdelete()
:help clearmatches()
:help function!
:help autocmd
:help autocmd-buffer-local
:help BufEnter

您可能也对我对这个问题的回答感兴趣,这个问题涵盖了更多的一般操作员突出显示.



2> rampion..:

将设置放在〜/ .vim/after/syntax/cpp.vim中

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有