Vim替换为外壳命令输出,正则表达式组作为参数传递给该输出

Vim替换为外壳命令输出,正则表达式组作为参数传递给该输出,vim,substitution,Vim,Substitution,我知道一个特殊的\=序列,它允许替换被解释为一个表达式——我很好奇是否有可能以某种方式将匹配的组传递给表达式 例如,这非常有效(将“50”替换为-7到7范围内的随机洗牌): 我喜欢的是,能够捕获组中的“50”并将其传递给命令 根据我在“帮助”中找到的信息,它说: “第|小节中提到的字符的特殊含义替换为特殊| 做 除外,不适用 据我所知,这意味着诸如组反向引用之类的特殊序列不会被相应地解释和提供给表达式 如果我是错的,或者我是对的,但是有一个解决办法——分享你的技巧将不胜感激。如果我再花几分钟寻找

我知道一个特殊的\=序列,它允许替换被解释为一个表达式——我很好奇是否有可能以某种方式将匹配的组传递给表达式

例如,这非常有效(将“50”替换为-7到7范围内的随机洗牌):

我喜欢的是,能够捕获组中的“50”并将其传递给命令

根据我在“帮助”中找到的信息,它说:

“第|小节中提到的字符的特殊含义替换为特殊| 做 除外,不适用

据我所知,这意味着诸如组反向引用之类的特殊序列不会被相应地解释和提供给表达式


如果我是错的,或者我是对的,但是有一个解决办法——分享你的技巧将不胜感激。

如果我再花几分钟寻找,我自己就找到了答案。 无论如何-答案在于'submatch()'函数,它正好满足我的需要

%s/50/\=substitute(system('echo $(shuf -i 1-14 -n1) - 7 | bc'), '\n', '', 'g')/gc