阅读前请注意:本文仅借此实例介绍如何在 vim 中使用 python 和 perl 脚本,不代表 vim 在处理格式化的较大文本时是一个好的选择。
对于行数较多的格式化文本(比如 log 文件),还是建议使用专门的处理工具或者通用脚本语言。
常见的通用脚本语言:perl、python;
Windows 可选方案:batch(批处理)、powershell 脚本、vbs;
*nix 可选方案:sed、awk、bash shell(建议配合前两者使用)。
早前,@杨君 朋友提出了一个问题:
我提供了一个使用宏的解决方案。此后在与杨君的交流中,得知杨君需要处理的文本行数稍多(数千行),这个数量已经超出宏的处理能力(并非不能做,只是速度太慢,无法接受),我后来建议他用其他工具处理。
实际上 vim 的宏只适宜临时处理很小的文本,面对行数较多的文本效率会明显下降。特别是在家用电脑的环境下,用宏或者命令来处理几千 k 的文件不是个好主意。
在本文中,我准备了如下测试文档,共 700007( 70 万零 7 行),文件大小 8.0M:
1| "value"
2| {
3| "wave"
4| "wave"
5| "wave"
6| "wave"
7| }
8| "value"
9| {
10| "wave"
11| "wave"
12| "wave"
13| "wave"
14| }
15| "value"
16| {
17| "wave"
18| "wave"
19| "wave"
20| "wave"
21| }
...
700001| "value"
700002| {
700003| "wave"
700004| "wave"
700005| "wave"
700006| "wave"
700007| }
目标是对每组的 "wave" 进行独立的编号:
1| "value"
2| {
3| "wave0"
4| "wave1"
5| "wave2"
6| "wave3"
7| }
8| "value"
9| {