如何使用molokai为vim中的括号和方括号添加颜色

如何使用molokai为vim中的括号和方括号添加颜色,vim,Vim,我在vim中使用python/html/css/javascript编写代码。当我编辑python文件(或javascript)时,括号不带颜色。对于括号为灰色的简单脚本(如molokai.vim本身),情况并非如此 我编辑了molokai.vim并添加了 hi parens guifg=#999999 然后我编辑了.vimrc,并添加了: syn match parens /[(){}]/ 但括号和括号仍为白色 我做错了什么 切勿使用:syn突出显示所有文件类型,有matchadd()用于

我在vim中使用python/html/css/javascript编写代码。当我编辑python文件(或javascript)时,括号不带颜色。对于括号为灰色的简单脚本(如molokai.vim本身),情况并非如此

我编辑了
molokai.vim
并添加了

hi parens guifg=#999999
然后我编辑了
.vimrc
,并添加了:

syn match parens /[(){}]/
但括号和括号仍为白色

我做错了什么

  • 切勿使用
    :syn
    突出显示所有文件类型,有
    matchadd()
    用于此项。使用
    :syn
    可以轻松中断高亮显示,
    matchadd()
    是一种覆盖
  • 当触发
    Syntax
    事件时,将覆盖语法突出显示。此外,它仅对当前缓冲区有效。因此,vimrc中的
    syn
    将永远无法工作,您必须使用自动命令

    autocmd! Syntax python :syntax match Parens /[(){}]/
    
    (对于python来说,它是安全的,因为括号和数字括号不与任何其他语法元素匹配)

  • javascript中的括号(
    ()
    )已经由
    javaScriptParens
    突出显示组匹配。因此,您必须使用

    hi def link javaScriptParens Parens
    
    (在配色方案中)。大括号由
    javaScriptBraces
    匹配,需要类似的命令

  • 要确定特定符号的突出显示内容,我将光标放在该符号上并启动

    echo 'Normal '.join(map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")'))
    
    ,最后显示的单词通常是您需要的。如果仅显示
    Normal
    ,则符号不会突出显示,您必须转到2,否则必须转到3

  • 对于不考虑当前使用的突出显示的通用解决方案,您可以使用我已经说过的
    matchadd()。但它是windows的本地版本,因此,如果您使用多个窗口/选项卡,则无法使用autocmd:

    autocmd! WinEnter * :if !exists('w:parens_match_id') | let w:parens_match_id=matchadd('Parens', '[(){}]') | endif
    
  • 所有自动命令都要用

    augroup HighlightParens
        autocmd! …
    augroup END