14

我知道您可以在 vim 搜索/替换操作中调用函数。例如:

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

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

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

不再将“本地时间”视为函数。相反,它只是将 'epoch: =localtime()' 打印为替换文本中的字符串。目的是让它打印'epoch:1353085984'。

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

4

1 回答 1

16

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

:%s/regex/\='epoch: ' . localtime()/g
于 2012-11-16T17:31:39.677 回答