我们可以使用 m 来移动线条,使用 j 来连接线条。例如,如果您有一个列表,并且想要分离所有匹配的内容(或者相反,不匹配某些模式)而不删除它们,那么您可以使用类似: :% g/foo/m$ ... 以及所有“ foo”行将被移至文件末尾。(请注意有关使用文件末尾作为暂存空间的另一个提示)。这将保留所有“foo”行的相对顺序,同时从列表的其余部分中提取它们。(这相当于执行以下操作:(
1G!GGmap!Ggrep foo<ENTER>1G:1,'a g/foo'/d将文件复制到其自己的尾部,通过 grep 过滤尾部,然后删除头部的所有内容)。
浏览了吉姆·丹尼斯的传奇答案,但我仍然无法理解这个序列:
1G!GGmap!Ggrep foo<ENTER>1G:1,'a g/foo'/d
谁帮忙解释一下,什么是GGmap?为啥1G之间有嘭嘭响!GG图?Ggrep 是来自 vim-fugitive 吗?