如何将所有匹配的行放入一个缓冲区?

你如何将所有的匹配行放入缓冲区?

给定一个文件,如:

match 1 skip skip match 2 match 3 skip 

我希望能够发出一个命令,将与模式匹配的所有行(比如/ ^ match /这个例子)放到一个单独的缓冲区中,这样我就可以把它放到另一个文档中,或者写入一个摘要或者其他的文档中。

这个命令应该放在缓冲区里:

 match 1 match 2 match 3 

我的第一个想法是尝试:

 :g/^match/y 

但我只是得到最后一场比赛。 这是有道理的,因为:g命令有效地重复每个匹配行的y

也许有一种方法来追加缓冲,而不是覆盖它。 我无法find它。

 :help registers :help quote_alpha 

指定一个大写字母作为注册名称以便附加到它,例如:yank A

:g/^match/yank A

哦,我刚才意识到上面的评论后,很容易就可以将匹配的行抽出到一个临时缓冲区中。

:r !grep "pattern" file.txt

一旦你放弃find他们,最简单的解决scheme就来了。 🙂