Vim:编辑python.vim语法文件以突出显示Textmate

pfd*_*ers 10 regex vim

我正在尝试编辑python.vim语法文件,以复制Textmate中python的语法高亮显示.附图说明了我正在努力实现的功能参数的突出显示.

imgur pic代码

self,a,b在Textmate中突出显示,但在Vim中不突出显示.我想我必须做以下事情.

  1. 匹配新区域

    syn region pythonFunction start="(" end=")" contains=pythonParameters skipwhite transparent
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试匹配字符串后跟逗号

    syn match pythonParameters ".*" contained
    
    Run Code Online (Sandbox Code Playgroud)

所以在第2点,".*"将匹配任何字符串,并且必须进一步扩展为正确.但是我不确定我是否在正确的路径上,因为2中的匹配不限于括号()之间的区域.任何提示或输入将不胜感激.

编辑1:如果有人想知道最终结果如何.

这是我为python突出显示的vim语法.

imgur pic代码

编辑2:因此,为了最终彻底,我为它创建了一个github页面.

http://pfdevilliers.github.com/Pretty-Vim-Python/

Spe*_*bun 6

好的,你有几个问题.

  1. 已经存在一个名为pythonFunction的区域,用于突出显示def和函数名称.
  2. 该区域将匹配任何地方的任何括号

所以,找到pythonFunction匹配,并将其更改为:

syn match   pythonFunction
      \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained nextgroup=pythonVars
Run Code Online (Sandbox Code Playgroud)

添加nextgroup告诉vim在函数定义后匹配pythonVars.

然后加:

syn region pythonVars start="(" end=")" contained contains=pythonParameters transparent keepend
syn match pythonParameters "[^,]*" contained skipwhite
Run Code Online (Sandbox Code Playgroud)

最后,要实际突出显示它,找到该HiLink部分,并添加:

HiLink pythonParameters       Comment
Run Code Online (Sandbox Code Playgroud)

更改Comment为您想要的分组,或添加您自己的分组.我正在使用Statement自己.