submatch(0)给出一个空字符串

时间:2014-03-26 05:59:39

标签: vim

在vim脚本(gvim72)中我使用

substitute("abcdef", '.*' , submatch(0).'append','g')

提供'append'代替'abcdefappend',这里会发生什么?

2 个答案:

答案 0 :(得分:3)

submatch()不会在substitute()内执行您想要的操作,因为submatch(0)会被评估并传递到函数中,而不是以符号方式处理。

您想要的是在更换时评估它:

substitute("abcdef", ".*", "\\=submatch(0).'append'", "g")

请参阅submatch()substitute()和(最重要的)sub-replace-expression的帮助。

答案 1 :(得分:1)

对于这个简单的事情你也可以使用反向引用语法而不是submatch:

substitute("abcdef", '.*' , '\0append','g')