假设我们有以下由空行分隔的段落:
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.
一种解决方案是在排序之前连接您的段落。
假设您的文本中不使用@
符号,您可以使用:
:%s/\(.\+\)\n/\1@/
完成这个操作,然后您可以使用排序功能对行进行排序。
:sort
最后进行反向操作,以获取您的段落:
:%s/@/\r/g
我编写了AdvancedSorters插件,将@Qeole的答案中给出的三个步骤简化为单个命令:
:SortRangesByHeader /\u Heading/
:SortUnfolded
命令! - Qeole
:%s/\(.\+\)\n/\1@//
的末尾需要第二个斜杠? - TransferOrbit