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

Mer*_*glu 4 sorting vim

假设我们有以下段落,它们之间用空行隔开:

B Heading
Lorem ipsum 1.
Lorem ipsum 2.

A Heading
Lorem ipsum 3.
Lorem ipsum 4.
Run Code Online (Sandbox Code Playgroud)

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

A Heading
Lorem ipsum 3.
Lorem ipsum 4.

B Heading
Lorem ipsum 1.
Lorem ipsum 2.
Run Code Online (Sandbox Code Playgroud)

Qeo*_*ole 10

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

假设您没有@在文本中使用该符号,您可以使用:

:%s/\(.\+\)\n/\1@//
Run Code Online (Sandbox Code Playgroud)

要做到这一点.然后你可以用你的线条排序

:sort
Run Code Online (Sandbox Code Playgroud)

并最后进行相反的操作以获取您的段落:

:%s/@/\r/g
Run Code Online (Sandbox Code Playgroud)