我在vim中使用molokai以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()
,正如我已经说过的。但它是窗口本地的,所以如果你使用多个窗口/选项卡,你就不能没有autocmd:autocmd! WinEnter * :if !exists('w:parens_match_id') | let w:parens_match_id=matchadd('Parens', '[(){}]') | endif
所有自动命令都要用包围
augroup HighlightParens
autocmd! …
augroup END