如何根据Vim的标题对段落进行排序?

时间:2014-06-07 15:49:21

标签: sorting vim

我们假设我们有以下段落用空行隔开:

B Heading
Lorem ipsum 1.
Lorem ipsum 2.

A Heading
Lorem ipsum 3.
Lorem ipsum 4.

如何根据标题对这些段落进行排序并获得以下文字?

A Heading
Lorem ipsum 3.
Lorem ipsum 4.

B Heading
Lorem ipsum 1.
Lorem ipsum 2.

2 个答案:

答案 0 :(得分:9)

一种解决方案是在排序之前连接段落。

假设您未在文本中使用@符号,则可以使用:

:%s/\(.\+\)\n/\1@//

这样做。然后你可以用

对你的行进行排序
:sort

然后继续进行相反的操作以恢复你的段落:

:%s/@/\r/g

答案 1 :(得分:0)

我已经写了AdvancedSorters plugin来简化@ Qeole在单个命令中给出的三个步骤:

:SortRangesByHeader /\u Heading/