如何在 Vim 语法突出显示中为函数调用着色

How to color function call in Vim syntax highlighting

我是 Vim 的新手,很好奇如何在定义函数后突出显示函数调用。作为一个 example, in the SublimeText version, totalForArray is green when it is defined, as well as when it is called on line 12. This is what my Vim looks like imgur.com/q2WMQ4d,我想知道如何在调用 totalForArray 时突出显示它。

Vim的语法解析通常只给函数definition着色,因为那个很容易用正则表达式定位。对于函数 calls,它必须维护一个检测到的函数列表。

有一些插件可以使用这样的列表来扩展语法突出显示,通常取自标签数据库。例如,easytags.vim plugin 执行自动标签更新,并可以通过 :HighlightTags 命令突出显示这些标签。

作为@Ingo 提出的更简单的替代方法,您还可以定义一种语法来匹配任何直接跟在括号后的关键字:

syn match jsFunction "\<\k\+\ze("
hi link jsFunction Function

在 github 中搜索我还找到了 vim-javascript 插件,它似乎对 Vim 中包含的默认 Javascript 语法进行了各种扩展。特别是,它包含以下语法定义:

syntax match jsFuncCall /\k\+\%(\s*(\)\@=/

这将实现我之前描述的相同语法突出显示,但通过使用此插件,您还可以受益于其中包含的其他改进。

改进了 Vitor 的正则表达式匹配。 这将突出显示嵌套函数调用,同时尊重 whileiffor 等关键字的突出显示......并且还允许函数名称和括号之间的空格 例如myFunction (int argc) { ... }

syn match dFunction "\zs\(\k\w*\)*\s*\ze("
hi link dFunction Function