Vim突出显示python递归定义

时间:2017-07-04 20:37:00

标签: python recursion vim syntax highlighting

我使用jellybeans colorscheme为vim。我注意到在编写递归函数时,名称仅在定义的开头而不是在缩进块中突出显示:

def fact(n):        #'fact' appears yellow
    ...
    return n*fact(n-1) #'fact' appears in white like regular text, variables etc.

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

是的,有解决方案,但你真的想要它:它可以突出你的所有代码。

只需突出显示所有类似myfunc()的内容:

:syn match calledFunc /\(\w\|\.\)\+\ze(/
:hi calledFunc ctermfg=Yellow

注意:

使用语法优先级(:help syn-priority),这应该是你想要的。因为像def myfunc()这样的函数定义被认为是关键字(并且具有更高的优先级): 见/usr/share/vim/vim74/syntax/python.vim

syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite
syn match   pythonFunction "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained
HiLink pythonFunction Function

另一个缓慢的解决方案可能是:

  • 1 /解析文件(并包含?)以获取所有功能,将它们存储在列表中
  • 2 /高亮显示这些功能