如何对文本块进行排序?

时间:2013-12-04 04:16:19

标签: sorting vim

我的文字为50000行

更改前

bird={
explain line1
explain line2
...
}
zero={
explain line1
explain line2
...
}
bed={
explain line1
explain line2
...
}
air={
explain line1
explain line2
...
}
.......

我想换成

air={
explain line1
explain line2
...
}
bed={
explain line1
explain line2
...
}
bird={
explain line1
explain line2
...
}
zero={
explain line1
explain line2
...
}

我的解决方案分为四个步骤:

1。:g/{/;/}/s/$/@(@未包含在文件中)

2。:g/{/;/}/j!

3。:sort

4。:%S/@/\r/g

有更好的解决方案吗?一步?

1 个答案:

答案 0 :(得分:2)

Vim在排序时没有“将这些块视为单个单元”的内置概念;折叠也无济于事。您已经概述的方法(首先将每个块的所有行连接成一个长行,然后排序,然后取消加入)是规范的解决方法。

当然,如果您更频繁地需要此功能,则可以为其定义自定义:command。有关示例(适用于折叠),请参阅this