vim - 在'replace'表达式中调用函数

时间:2012-11-16 17:23:54

标签: vim

据我所知,你可以在vim搜索/替换操作中调用一个函数。例如:

%s/regex/\=localtime()/g

将使用当前纪元时间替换与“正则表达式”匹配的任何内容。问题是,我无法在'replace'表达式中添加任何其他内容。例如:

%s/regex/epoch: \=localtime()/g

不再将'localtime'视为一个函数。相反,它只是在替换文本中将'epoch:= localtime()'打印为字符串。目的是打印'epoch:1353085984'而不是。

有没有办法从替换表达式的任意部分调用函数?

1 个答案:

答案 0 :(得分:15)

使用replace-expression后,它必须是整个替换。您可以在表达式中使用字符串连接(并通过submatch(1)而不是\1引用捕获的元素),如下所示:

:%s/regex/\='epoch: ' . localtime()/g