代码之家  ›  专栏  ›  技术社区  ›  Tassos

VIM: C++符号的颜色

vim
  •  1
  • Tassos  · 技术社区  · 15 年前

    Vim:是否可以更改这些符号的颜色: ~!%^&*()-+=[],.<>?: 像Visual Studio一样?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Cascabel    15 年前

    C/C++语法定义在语法/CVIM和语法/CPP.VIM中。如果您使用的是Linux,那么主语法目录在/usr/share/vimxx/中,其中xx是版本(例如mine在vim72中)。我不知道其他操作系统上的安装目录,但我相信您可以找到它。我建议您复制这些文件并将它们放在您的用户vim目录中(例如,在Linux中,$home/.vim/syntax/c.vim等等)。然后你可以添加你喜欢的任何东西。

    C++语法源于C语法,所以你想在其中突出显示的任何符号都应该进入C.VIM,而C++中的任何东西都只能在CPP.vim中。

    要突出显示特定符号的语法,需要使用语法匹配语句,例如:

    syn match cUserSpecialCharacter display "[~!%^&*()-+=[\]{},.<>?:;]"
    syn match cUserSpecialCharacter display "/[^*/]"me=e-1
    syn match cUserSpecialCharacter display "/$"
    

    我叫它 cUserSpecialCharacter 自从 cCharacter cSpecialCharacter 已被使用。第二场和第三场比赛有点含混不清。 '/' 如果它不匹配注释前缀,那么将覆盖突出显示的注释并中断所有内容。“display”(显示)选项告诉Vim,如果不显示,则不需要查找此匹配项-请参见 :help syn-display 如果你愿意的话,请解释一下!

    定义语法匹配后,可以将其链接到突出显示组,例如:

    hi def link cUserSpecialCharacter cCharacter
    

    这将使它与已经定义的 字符 小组,这样它会得到任何突出显示-在这种情况下, Character .例如,您可以在c.vim底部看到一个突出显示组的列表。如果你真的想要,你也可以通过如下方式硬编码一个突出显示:

    hi cUserSpecialCharacter term=reverse ctermfg=15 ctermbg=1 guifg=#ffffff guibg=#800000
    

    (任意示例-我当前突出显示的 Error 组)见 :help hi 更多信息,或简单地 :hi 查看已定义的突出显示列表-大量示例。不过,我建议不要这样做,因为它不会随配色方案而改变。

        2
  •  0
  •   ewanm89    15 年前

    是的,您需要在vimfiles/colors/c.vim中编辑c color主题。我不知道可以使用的所有主题选项,但我确信它们都记录在 http://vim.org/