是否有一个简单的 :g/PATTERN/m0 等效项,不会反转匹配的行?

Pan*_*ndu 5 vim

有时我想将文件中的所有行移动到该文件的顶部。:g/PATTERN/m0几乎做了我想要的,但因为:g一次按顺序操作一行,它也会反转受影响的行。


例子:

考虑这个文件。假设我想分隔包含数字的行并将它们移动到文件的顶部。:g/\d/m0几乎做了我想要的(fr4nk、car0l 和 b0b 移到顶部)——但它颠倒了匹配行的顺序。

alice
b0b
car0l
dan
eve
fr4nk
Run Code Online (Sandbox Code Playgroud)

实际输出:

fr4nk
car0l
b0b
alice
dan
eve
Run Code Online (Sandbox Code Playgroud)

期望的输出:

b0b
car0l
fr4nk
alice
dan
eve
Run Code Online (Sandbox Code Playgroud)

做我想做的事情的一种方法是使用:g/PATTERN/m$(不会反转行),然后将行从文件底部移动到顶部。有没有更简单的?

Lie*_*ers 7

不要将匹配的行移动到顶部(反转),而是将没有匹配的行移动到底部

:v/\d/m$
Run Code Online (Sandbox Code Playgroud)