0

例子:

let hits = [] 

:5s/regex-search/\=join(add(hits, submatch(0)))/g

这会将第 5 行中的所有匹配项添加到列表中。

但是,它在文本中也可以替代。
我试图在 'n之后添加 ' ' 标志g但这不会将匹配项添加到列表中。

有什么办法可以解决我的问题吗?

4

2 回答 2

4

差不多好了。首先,我认为您不需要加入。其次,add 返回添加了匹配项的列表。因此,您可以只选择列表的最后一个元素作为替换元素。(这使它看起来好像什么都没有被替换)

s/regex-search/\=add(hits,submatch(0))[-1]/g
于 2013-07-07T17:23:44.493 回答
1

使用最新的 Vim 版本,您可以防止发生实际替换(并弄乱您的撤消分支),而 :s 命令右侧的表达式仍在计算中。

你至少需要 Vim patch Vim patch 7.3.627然后你就可以简单地使用

:s/foobar/\=add(hits, submatch(0))/gn
于 2013-07-08T17:50:19.873 回答