据我所知,你可以在vim搜索/替换操作中调用一个函数。例如:
%s/regex/\=localtime()/g
将使用当前纪元时间替换与“正则表达式”匹配的任何内容。问题是,我无法在'replace'表达式中添加任何其他内容。例如:
%s/regex/epoch: \=localtime()/g
不再将'localtime'视为一个函数。相反,它只是在替换文本中将'epoch:= localtime()'打印为字符串。目的是打印'epoch:1353085984'而不是。
有没有办法从替换表达式的任意部分调用函数?
答案 0 :(得分:15)
使用replace-expression后,它必须是整个替换。您可以在表达式中使用字符串连接(并通过submatch(1)
而不是\1
引用捕获的元素),如下所示:
:%s/regex/\='epoch: ' . localtime()/g