首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim -在粘贴之前/之后对寄存器的内容进行排序?

Vim -在粘贴之前/之后对寄存器的内容进行排序?
EN

Stack Overflow用户
提问于 2018-03-09 03:28:13
回答 2查看 132关注 0票数 2

作为我的一个项目的一部分,我正在尝试将某些行从文件移动到顶部,并以某种方式排序。一旦这些行在上面,我不确定如何进行排序-我不想干扰文件中的其他行。

我把它们拽出来放回原处,就像这样:

代码语言:javascript
复制
g:/pattern/yank A
g:/pattern/d
0put A

这会根据需要将我指定的所有行移到文件的顶部,但现在我需要根据模式对它们进行排序,如下所示:

代码语言:javascript
复制
[range]sort r /pattern2/

有没有办法在粘贴之前对寄存器的内容进行排序?或者只对与/pattern/匹配的行进行排序?(当然,因为所有被拉动的线路都会)。

我受阻了,如果能帮上忙,我会很感激。

编辑-一种可能的解决方法可能是在被拖拽之前计算行数,然后在再次放置这些行时使用它来选择和排序这些行。我不确定如何计算这些行-我可以使用命令%s/ pattern //n打印与模式匹配的行数,但我不能用这个数字做任何事情,也不能在函数中使用这个数字。

EN

Stack Overflow用户

发布于 2018-03-09 04:11:35

:g/pattern/cmd的主要目的是在与pattern匹配的每一行上执行cmd。当然,cmd可以是:sort

使用与您相同的方式:

代码语言:javascript
复制
:g/pattern/yank A

要将与pattern匹配的每一行都附加到寄存器a中,请执行以下操作:

代码语言:javascript
复制
:g/pattern/d

要删除与pattern匹配的每一行,您可以执行以下操作:

代码语言:javascript
复制
:g/pattern/sort r /pattern2/

pattern2上与pattern匹配的每一行进行排序。

不管怎么说,你的例子是浪费的。您可以简单地这样做,而不是使用三个命令来滥用寄存器:

代码语言:javascript
复制
:g/pattern/m0

要在使用排序之前将匹配pattern的每一行移动到缓冲区的顶部,请执行以下操作:

代码语言:javascript
复制
:g//sort r /pattern2/

参见:help :global:help :sort:help :move

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49181011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档