如果我理解正确并且您正在尝试查看 C 代码(在 python 中生成)中不匹配的括号,我建议您从Dr Chip's Site安装 rainbow.vim 。这将根据缩进级别以不同颜色突出显示大括号,并根据您的要求以红色突出显示不匹配的大括号。截图http://img294.imageshack.us/img294/8586/rainbow.jpg http://img294.imageshack.us/img294/8586/rainbow.jpg
安装、下载rainbow.vim
并放入vimfiles/after/syntax/c/
(如果该目录不存在,则创建此目录)。
在 Linux 上,这将是~/.vim/after/syntax/c/rainbow.vim
在 Windows 上,它可能在c:\vim\vimfiles\after\syntax\c\rainbow.vim
或可能在其他地方,请参阅:help runtimepath
.
请注意,有些插件与 冲突rainbow.vim
,但让它们合作并不难。
如果您试图在 python 代码中突出显示不匹配的括号,您可以修改 rainbow.vim 以使用 python 语法集群而不是 C 语法集群,但这有点复杂,但您可以使用类似的东西(奇普博士彩虹代码的修改版):
syn cluster pyParenGroup contains=pythonString,pythonRawString,pythonEscape,pythonNumber,pythonBuiltin,pythonException
syn match pyParenError display ')'
syn region pyParen transparent matchgroup=hlLevel0 start='(' end=')' contains=@pyParenGroup,pyParen1
syn region pyParen1 transparent matchgroup=hlLevel1 start='(' end=')' contains=@pyParenGroup,pyParen2
syn region pyParen2 transparent matchgroup=hlLevel2 start='(' end=')' contains=@pyParenGroup,pyParen3
syn region pyParen3 transparent matchgroup=hlLevel3 start='(' end=')' contains=@pyParenGroup,pyParen4
syn region pyParen4 transparent matchgroup=hlLevel4 start='(' end=')' contains=@pyParenGroup,pyParen5
syn region pyParen5 transparent matchgroup=hlLevel5 start='(' end=')' contains=@pyParenGroup,pyParen6
syn region pyParen6 transparent matchgroup=hlLevel6 start='(' end=')' contains=@pyParenGroup,pyParen7
syn region pyParen7 transparent matchgroup=hlLevel7 start='(' end=')' contains=@pyParenGroup,pyParen8
syn region pyParen8 transparent matchgroup=hlLevel8 start='(' end=')' contains=@pyParenGroup,pyParen9
syn region pyParen9 transparent matchgroup=hlLevel9 start='(' end=')' contains=@pyParenGroup,pyParen
hi link pyParenError Error
if &bg == "dark"
hi default hlLevel0 ctermfg=red guifg=red1
hi default hlLevel1 ctermfg=yellow guifg=orange1
hi default hlLevel2 ctermfg=green guifg=yellow1
hi default hlLevel3 ctermfg=cyan guifg=greenyellow
hi default hlLevel4 ctermfg=magenta guifg=green1
hi default hlLevel5 ctermfg=red guifg=springgreen1
hi default hlLevel6 ctermfg=yellow guifg=cyan1
hi default hlLevel7 ctermfg=green guifg=slateblue1
hi default hlLevel8 ctermfg=cyan guifg=magenta1
hi default hlLevel9 ctermfg=magenta guifg=purple1
else
hi default hlLevel0 ctermfg=red guifg=red3
hi default hlLevel1 ctermfg=darkyellow guifg=orangered3
hi default hlLevel2 ctermfg=darkgreen guifg=orange2
hi default hlLevel3 ctermfg=blue guifg=yellow3
hi default hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
hi default hlLevel5 ctermfg=red guifg=green4
hi default hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
hi default hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
hi default hlLevel8 ctermfg=blue guifg=darkslateblue
hi default hlLevel9 ctermfg=darkmagenta guifg=darkviolet
endif
编辑:
作为测试,我从ftp://ftp.vim.org/pub/vim/pc/下载了 gvim70.zip和vim70rt.zip(这些是 Vim 7.0 的 Windows 版本)。我将这两个文件解压缩到一个新目录并从. 我没有存储在“C:\Documents and Settings”中的任何 vim 配置,所以运行这个 vim 与运行“vanilla”配置相同。然后,我从amk.ca/python/simple/pyprint.html下载了一段示例代码,并将上述代码复制到名为 code.vim 的文件中。在 gVim 中,我输入了. 它在白色背景窗口中打开,没有语法突出显示。然后我进入gvim.exe
vim/vim70/gvim.exe
pyprint.py
:e pyprint.py
:syntax on
,它打开了默认的语法突出显示。我在第 8 行添加了第二个)
字符。最后,我输入:source code.vim
了 ,这使得第二个)
字符以红色突出显示。
我还在 Linux(使用 Vim 7.2)上执行了这个测试,输入以下命令序列:
cd ~
mv .vimrc old_dot_vimrc
mv .gvimrc old_dot_gvimrc
mv .vim old_dot_vim
vim pyprint.py
:e pyprint.py
" Add extra bracket here!
:syntax on
:source code.vim
再次,第二个括号突出显示,其他一切似乎正常。