0

我正在查看一个名为php_getset的 vim ftplugin 。它为 php 属性生成 getter 和 setter。虽然它工作得很好,但它不能正确猜测缩进。我正在努力解决这个问题。相关代码如下:

let s:phpname = '[a-zA-Z_$][a-zA-Z0-9_$]*'
let s:variable = '\(\s*\)\(\([private,protected,public]\s\+\)*\)\$\(' . s:phpname . '\)\s*\(;\|=[^;]\+;\)'
... (inside a function)
let s:indent    = substitute(a:variable, s:variable, '\1', '')
let s:varname   = substitute(a:variable, s:variable, '\4', '')
let s:funcname  = toupper(s:varname[0]) . strpart(s:varname, 1)

通过调试它,我看到它a:variable具有价值d $downPayment;(d 来自单词“protected”的末尾)。我不明白要substitute完成的第三个论点。我以前读过反向引用,但我看不到他们在这段代码中做了什么。

提前感谢您的帮助。让我知道我是否可以使我的问题更清楚或提供更多细节。

4

0 回答 0