Mic*_*fik 12 python vim syntax-highlighting
在vim中编写python代码时,我被无法比拟的括号反复烧毁.我喜欢它们是如何处理C代码的 - 在无与伦比的paren之后的所有花括号中的红色vim亮点.我c.vim简要地查看了语法文件以尝试理解它,但处理括号错误的部分非常复杂.任何人都可以解释该代码如何工作,并建议我如何为python代码编写类似的东西?
具有不匹配的parens的示例C代码:
int main(void
{ /* brace highlighted in red */
} /* brace highlighted in red */
Run Code Online (Sandbox Code Playgroud)
由于python代码没有花括号来突出显示,我们必须选择其他东西(也许是其他括号).
顺便说一句,我尝试了这个vim插件,但我对这种行为不满意.
编辑:
我正在使用python生成C++代码(一种喜欢括号和分号的语言).我有一个令人讨厌的习惯,就是让方向file.write()调用离开尾随的paren .如果我能让vim更明显地犯这个错误,那就太好了.
更新:
好的,这是我到目前为止所尝试的内容.
:syn region pParen transparent start="(" end=")" contains=ALL
:syn match pError display ")"
:hi def link pError Error
Run Code Online (Sandbox Code Playgroud)
不幸的是,所有这一切都是突出显示所有平衡括号的正确错误,与我想做的相反.我真的不明白我在这里做什么(只是复制了现有的C语法文件).如果有人能解释我的所作所为(错误),我将不胜感激.
你可以让vim做相反的事情:做一个
:设置showmatch
它将突出匹配的parens.当你没有突出某些东西时,你会知道什么时候你是不平衡的.
我还假设您熟悉'%'命令,它会将您弹回匹配元素.
如果我理解正确并且您正在尝试查看 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
Run Code Online (Sandbox Code Playgroud)
编辑:
作为测试,我从ftp://ftp.vim.org/pub/vim/pc/(这些是 Vim 7.0 的 Windows 版本)下载了gvim70.zip和vim70rt.zip。我将这两个文件解压缩到一个新目录中并从. 我没有在“C:\Documents and Settings”中存储任何 vim 配置,所以运行这个 vim 与运行“vanilla”配置相同。然后我从amk.ca/python/simple/pyprint.html下载了一段示例代码,并将上面的代码复制到一个名为 code.vim 的文件中。在 gVim 中,我输入了. 它在白色背景窗口中打开,没有语法突出显示。然后我进入gvim.exevim/vim70/gvim.exepyprint.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
Run Code Online (Sandbox Code Playgroud)
同样,第二个括号突出显示,其他一切似乎正常。