如何在Python中突出显示成员变量?

时间:2013-11-29 06:17:00

标签: vim vim-syntax-highlighting

我正在尝试为Python设置某种类型的语法高亮显示。

我希望selfcls像评论一样突出显示。 我希望成员变量像函数一样突出显示。

例如,如果normal text是(白色),comments是(灰色),functions是(红色):

self._member

应为self(灰色).(白色)_member(红色)

self._member.other.method()

应为self(灰色).(白色)_member(红色).other.method()(白色)

self._method()

应为self(灰色)._method()(白色)

我尝试复制和修改装饰器的语法,因为它们看似相似,但没有运气。我也拿了look at the docs,但他们非常激烈。我对如何做到这一点有任何想法?

编辑:

几乎得到了它:

syn keyword pythonThis   cls self
syn match   pythonMember "\(cls\.\|self\.\)\@<=[A-Za-z_]\+\(\.\| \)"

hi link pythonThis    Comment
hi link pythonMember  Function

唯一的问题是成员变量后面的一个点是红色而不是白色(self._member.other.method()并未突出显示 ,如上所述)。没什么大不了的,但是知道如何在一次匹配中忽略多个组会很好(看起来你似乎不能多次使用\@<=)。

2 个答案:

答案 0 :(得分:1)

syn keyword pythonThis cls self

syn match pythonChain '\v(^|\W)(cls|self)\zs(\s*\.\s*\h\w*)+' contains=pythonMember
syn match pythonMember '\h\w*' contained

hi link pythonThis Comment
hi link pythonMember Function

答案 1 :(得分:0)

我建议在模式行中为当前文件中的每个成员添加一个:hi命令。