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

时间:2012-11-24 18:08:39

标签: vim

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

我修改了molokai.vim并添加了

hi parens guifg=#999999

然后我编辑了.vimrc并添加了:

syn match parens /[(){}]/

但括号和括号仍为白色。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

  1. 永远不要使用:syn突出显示所有文件类型,matchadd()为此。使用:syn可以轻松突破突出显示,matchadd()是叠加层。
  2. Syntax事件触发时,将覆盖语法突出显示。更多,它只对当前缓冲区有影响。所以只有vimrc中的syn永远不会工作,你必须使用自动命令

    autocmd! Syntax python :syntax match Parens /[(){}]/
    

    (对于python,它是安全的,因为括号和图括号不与任何其他语法元素匹配)。

  3. 在javascript括号(())已与javaScriptParens突出显示组匹配。因此你必须使用

    hi def link javaScriptParens Parens
    

    (在colorscheme中)。大括号由javaScriptBraces匹配,并且需要类似的命令。

  4. 要确定用于特定符号的突出显示,请将光标放在此符号上并启动

    echo 'Normal '.join(map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")'))
    

    ,最后显示的单词通常是您需要的。如果仅显示Normal,则符号不会突出显示,您必须转到2.否则您必须转到3.

  5. 对于通用解决方案而忽略当前使用的突出显示,您可以使用我已经说过的matchadd()。但它是窗口本地的,所以如果你使用多个窗口/标签你不能没有autocmd:

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

    包围
    augroup HighlightParens
        autocmd! …
    augroup END