vim 脚本 - 计算一行上的匹配数

Mat*_*hew 4 vim

我正在尝试计算一行中正则表达式匹配的数量,我需要在 vim 函数中使用结果。例如,计算左大括号的数量。

function! numberOfMatchesExample(lnum)
    let line_text = getline(a:lnum)

    " This next line is wrong and is the part I'm looking for help with
    let match_list = matchlist(line_text, '{')
    return len(match_list)

endfunction
Run Code Online (Sandbox Code Playgroud)

所以我想在 vim 函数中找到一种方法来将一行的正则表达式匹配数捕获到一个变量中。

有很多示例说明如何执行此操作并在状态栏上显示结果,请参阅 :h count-items,但我需要将数字捕获到变量中以便在函数中使用。

glt*_*lts 5

split()函数根据正则表达式拆分字符串。您可以使用它来分割有问题的行,然后从结果件数中减去 1 以获得匹配计数。

let nmatches = len(split(getline(a:lnum), '{', 1)) - 1
Run Code Online (Sandbox Code Playgroud)

:h split()