例子:
let hits = []
:5s/regex-search/\=join(add(hits, submatch(0)))/g
这会将第 5 行中的所有匹配项添加到列表中。
但是,它在文本中也可以替代。
我试图在 'n
之后添加 ' ' 标志g
但这不会将匹配项添加到列表中。
有什么办法可以解决我的问题吗?
差不多好了。首先,我认为您不需要加入。其次,add 返回添加了匹配项的列表。因此,您可以只选择列表的最后一个元素作为替换元素。(这使它看起来好像什么都没有被替换)
s/regex-search/\=add(hits,submatch(0))[-1]/g
使用最新的 Vim 版本,您可以防止发生实际替换(并弄乱您的撤消分支),而 :s 命令右侧的表达式仍在计算中。
你至少需要 Vim patch Vim patch 7.3.627然后你就可以简单地使用
:s/foobar/\=add(hits, submatch(0))/gn