我希望能够在if块中检查$ 1的值,以获得第一个反向引用。但是vimscript不是perl。
有没有办法做到这一点?我知道在正则表达式中使用\ 1,\ 2等的可能性,但是我想匹配然后在后续语句中使用这些值,就像在perl,php等中一样。
例如,在g //命令的评估部分中使用它会非常好,所以你可以做一些像
这样的事情:g/number: \(\d\+\)/b:number += v:matches[1] " or whatever the syntax is/could be
总计文件中某个数字的值。
可以这样做吗?
如果没有,有充分的理由吗?
答案 0 :(得分:2)
在进一步的启示中,我已经完成了:lhelpgrep submatch | lope
并且发现了至少一个其他有用的工具:您可以使用submatch({nr})
命令的评估端的substitute
。 EG
:s/there a\(r\)e n\(o \)stupid questions, on\(ly\) stupid people/\=toupper(submatch(2).submatch(1).submatch(3)."?")/
之前我尝试过这种方法,但我认为我正在搜索/ backref /并且没有得到我正在寻找的信息。
答案 1 :(得分:1)
matchlist({expr}, {pat}[, {start}[, {count}]])
返回在{pat}
{expr}
时找到的\ 1,\ 2,\ 3等
示例:
echo matchlist('acd','(a)\?(b)\?(c)\?(。*)')
结果:['acd','a','','c','d','','','','','']