我的文字为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
有更好的解决方案吗?一步?
答案 0 :(得分:2)
Vim在排序时没有“将这些块视为单个单元”的内置概念;折叠也无济于事。您已经概述的方法(首先将每个块的所有行连接成一个长行,然后排序,然后取消加入)是规范的解决方法。
当然,如果您更频繁地需要此功能,则可以为其定义自定义:command
。有关示例(适用于折叠),请参阅this。