我在vim中使用molokai来编写python / html / css / javascript代码。当我编辑python文件(或javascript)时,括号不会被着色。对于简单的脚本(如molokai.vim本身)而言,情况并非如此,其中括号为灰色。
我修改了molokai.vim
并添加了
hi parens guifg=#999999
然后我编辑了.vimrc
并添加了:
syn match parens /[(){}]/
但括号和括号仍为白色。
我做错了什么?
答案 0 :(得分:3)
:syn
突出显示所有文件类型,matchadd()
为此。使用:syn
可以轻松突破突出显示,matchadd()
是叠加层。 Syntax
事件触发时,将覆盖语法突出显示。更多,它只对当前缓冲区有影响。所以只有vimrc中的syn
永远不会工作,你必须使用自动命令
autocmd! Syntax python :syntax match Parens /[(){}]/
(对于python,它是安全的,因为括号和图括号不与任何其他语法元素匹配)。
在javascript括号(()
)已与javaScriptParens
突出显示组匹配。因此你必须使用
hi def link javaScriptParens Parens
(在colorscheme中)。大括号由javaScriptBraces
匹配,并且需要类似的命令。
要确定用于特定符号的突出显示,请将光标放在此符号上并启动
echo 'Normal '.join(map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")'))
,最后显示的单词通常是您需要的。如果仅显示Normal
,则符号不会突出显示,您必须转到2.否则您必须转到3.
对于通用解决方案而忽略当前使用的突出显示,您可以使用我已经说过的matchadd()
。但它是窗口本地的,所以如果你使用多个窗口/标签你不能没有autocmd:
autocmd! WinEnter * :if !exists('w:parens_match_id') | let w:parens_match_id=matchadd('Parens', '[(){}]') | endif
所有自动命令都将用
包围augroup HighlightParens
autocmd! …
augroup END