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

14

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

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

将匹配 'regex' 的任何内容替换为当前的时代时间。问题是,我不能在 'replace' 表达式中添加任何其他内容。例如:

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

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

是否有办法在替换表达式的任意部分调用函数?

1个回答

16

一旦你使用了替换表达式,它必须是完整的替换。你可以在表达式中使用字符串连接(并通过submatch(1)引用捕获的元素,而不是\1),就像这样:

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

完美的答案!简洁、简单而准确。谢谢! - pedorro
带参数的示例 substitute(submatch(1), "_", "%20", "g") - Behlül

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接