VIM语法着色lua函数名称?

我正在通过终端(SSH)使用VIM,并希望修改VIM中的语法着色设置,以便在Lua编程中使function_name呈黄色。不幸的是,我不知道如何做到这一点。

例如,在下面的代码中 - 我希望我的VIM将语法颜色设置为黄色myFunc

local function myFunc(arg1)
    ...
end

我已经想出如何使function变成黄色,使用以下代码:

hi luaFunction ctermfg=Yellow

但是这段代码没有将单词myFunc变成黄色(而且,老实说,我宁愿不对function进行语法着色)

问题: 有什么方法可以在Lua中将function名称语法着色?

点赞
用户1755026
用户1755026

如何:

hi def link luaFunction Function
hi Function ctermfg=Yellow
2013-05-14 03:19:41
用户546861
用户546861

这个非常朴素的实现可以与你的样例一起使用:

:hi luaCustomFunction ctermfg=yellow
:syn match luaCustomFunction "\s\+\zs\S\+\ze("

显然它的功能很有限,但至少是一个起点。阅读:h syntax获取更进一步的帮助。

2013-05-14 05:58:51
用户1890567
用户1890567

另一个(更复杂)的正则表达式来匹配函数名称。

:hi luaCustomFunction ctermfg=yellow
:syn match luaCustomFunction "\(\<function\>\)\@<=\s\+\S\+\s*(\@="

这个正则表达式使用反向引用来匹配单词 "function"。然后,在一个或多个空格后,它将突出显示任何在其后紧跟着括号的单词。

这只突出显示函数名。它不会突出显示括号。

我认为,如果您将这些命令放在.vim/after/syntax/lua.vim中,它应该可以工作。

将它们放在 vimrc 中的问题是,有时在 vimrc 被加载后语法高亮文件也被加载,而通常其中的第一行是 syn clear。(这会清除你刚刚设置的自定义语法高亮)

2013-05-14 14:09:10