regex - vim 将 regex 组的所有匹配项拖入寄存器

标签 regex vim regex-group yank

我知道我可以像这样将所有匹配的行猛拉到寄存器 A 中:

:g/regex/y/A

但我似乎无法弄清楚如何将匹配的正则表达式组猛拉到寄存器 A 中:
:g/\(regex\)/\1y A
(E10: \ should be followed by /, ? or &)

最佳答案

您可以使用替代命令执行此操作。

:%s/regex/\=setreg('A', submatch(0))/n

这会将 register a 附加到正则表达式匹配的任何内容。 n flag 将在沙箱中运行命令,因此实际上不会替换任何内容,但会发生语句的副作用。

你可能想先清空寄存器
:let @a=''

关于regex - vim 将 regex 组的所有匹配项拖入寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23713617/

相关文章:

vim - vimscript 中函数被多次调用

ruby - 是否有内置 api 可以从字符串中提取模式(尽可能多次)?

regex - 使用正则表达式将相同数量的重复字符替换为其他字符

r - 拆分字符串知道一些子字符串

vim - 通过Vim中的 ':'将行范围拉到剪贴板

vim - 如何在 Vim 的 g 命令的规范模式下转义

替换文本中大于5位的数字

javascript - 在捕获组前插入 $

java - 如何优化正则表达式模式?

python - 删除 scrapy python 中的特殊字符