VIM语法:函数名?

VIM语法:函数名?,vim,lua,syntax-highlighting,vim-syntax-highlighting,Vim,Lua,Syntax Highlighting,Vim Syntax Highlighting,我正在通过终端(SSH)使用VIM,并希望修改VIM中的语法着色设置,使Lua编程的函数名为黄色。不幸的是,我不知道怎么做 例如,在下面的代码中,我希望我的VIM语法为colormyFuncyellow local function myFunc(arg1) ... end 通过使用下面的代码,我已经知道了如何将函数设置为黄色: hi luaFunction ctermfg=Yellow 但是这段代码并没有将单词myFunc涂成黄色(坦率地说,我根本不希望语法颜色function)

我正在通过终端(SSH)使用VIM,并希望修改VIM中的语法着色设置,使Lua编程的函数名为黄色。不幸的是,我不知道怎么做

例如,在下面的代码中,我希望我的VIM语法为color
myFunc
yellow

local function myFunc(arg1)
    ...
end
通过使用下面的代码,我已经知道了如何将
函数设置为黄色:

hi luaFunction ctermfg=Yellow
但是这段代码并没有将单词
myFunc
涂成黄色(坦率地说,我根本不希望语法颜色
function

问题:有什么办法可以在Lua中对函数名进行语法着色吗?

怎么样:

hi def link luaFunction Function
hi Function ctermfg=Yellow
那么:

hi def link luaFunction Function
hi Function ctermfg=Yellow

这个非常简单的实现适用于您的示例:

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

这显然是非常有限的,但至少你有一个起点。阅读
:h syntax
以获取更多帮助。

这个非常简单的实现适用于您的示例:

:hi luaCustomFunction ctermfg=yellow
:syn match luaCustomFunction "\s\+\zs\S\+\ze("
这显然是非常有限的,但至少你有一个起点。阅读
:h syntax
以获取更多帮助。

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

:hi luaCustomFunction ctermfg=yellow
:syn match luaCustomFunction "\(\<function\>\)\@<=\s\+\S\+\s*(\@=" 
:hi-luaCustomFunction ctermfg=黄色
:syn match luaCustomFunction“\(\\)\@另一个(更复杂)的正则表达式来匹配函数名

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

:syn match luaCustomFunction“\(\\)\@链接的语法文件没有为非内置函数名定义任何内容。您可以尝试EasyTags或尝试编辑语法文件。romainl,我需要添加什么才能使其正常工作?链接的语法文件没有为非内置函数名定义任何内容。您可以尝试EasyTags或尝试编辑语法文件。romainl,我需要添加什么才能使其正常工作?romainl,这是匹配参数之前的任何内容,包括多个函数声明。我只想匹配函数声明,因此,我需要一个匹配“function ANYTHING”(“function ANYTHING”)的正则表达式。我如何做到这一点?我是否将这个脚本放在.vimrc中,因为当我将它放在那里时,它也不起作用,当函数名和“(”之间有空格时,它就不匹配了.romainl,这是匹配paren之前的任何内容,包括多个函数声明。我只想匹配函数声明,因此,我需要一个匹配“function anything(”.我该怎么做呢?还有,我应该把这个脚本放在.vimrc中吗?因为当我把它放在那里时,它也不起作用,当函数名和“(”之间有一个空格时,它就不匹配了.FDinoff,这太完美了!一个简单的问题,当我打开一个Lua文件时,我如何使这个语法高亮显示有效?当我把它放到我的.vimrc文件中时,它似乎不起作用。但是如果我在打开vim并查看Lua文件后键入这些命令,它就会起作用。最好不要每次都键入这些命令。有什么想法吗?FDinoff,@FDinoff抱歉,还有一件事-我注意到这对函数abc.myfunc(
函数abc:myfunc)不起作用(
。基本上,除了单词“function”和函数名称之间的空格外,任何其他字符都不匹配。您能更新这些用例吗?Thanks@nickb尝试上面的新字符。我将
\w
更改为
\S
\S
匹配任何非空白字符。FDinoff,这太完美了!一个quick问题,当我打开一个Lua文件时,我如何使这个语法高亮显示有效?当我把它放入我的.vimrc文件时,它似乎不起作用。但是如果我在打开vim并查看Lua文件后键入这些命令,它就会起作用。最好不要每次都键入这些命令。有什么想法吗?FDinoff,@FDinoff抱歉,还有一件事-我注意到这不适用于
函数abc.myfunc(
函数abc:myfunc(
。基本上,除了单词“function”和函数名称之间的空格外,任何其他字符都不匹配。您能更新这些用例吗?Thanks@nickb尝试上面的新字符。我将
\w
更改为
\S
\S
匹配任何非空白字符。