示例:
let hits = []
:5s/regex-search/\=join(add(hits, submatch(0)))/g
这将第5行中的所有匹配添加到列表中。
然而,它也是文本中的替代品
我尝试在“n
”之后添加“g
”标记
但是这不会将匹配项添加到列表中。
有什么方法可以解决我的问题吗?
答案 0 :(得分:4)
几乎就在那里。首先,我认为你不需要加入。其次,添加返回列表并添加匹配。因此,您只需选择列表的最后一个元素作为替换元素即可。 (这使得它似乎没有被替换)
s/regex-search/\=add(hits,submatch(0))[-1]/g
答案 1 :(得分:1)
使用最近的Vim版本,你可以防止实际的替换发生(并且弄乱你的undo分支),而仍然正在评估:s命令右侧的表达式。
您至少需要Vim补丁Vim patch 7.3.627然后才能使用
:s/foobar/\=add(hits, submatch(0))/gn