Vim:对一长行数组进行列化

Vim:对一长行数组进行列化

在编写测试时,我经常想将生成的值与我之前生成的值进行比较,但将控制台的输出转储到 vim 中会导致出现一条非常长且难看的行。有什么方法可以更改:

[ 6263, 4608 ], [ 6131, 4192 ], [ 6240, 4055 ], [ 6114, 3514 ], [ 6142, 3447 ], [ 6592, 3360 ], [ 6804, 3559 ], [ 7088, 3576 ], [ 7334, 3349 ], [ 7358, 3049 ], [ 7843, 2849 ], [ 8053, 3050 ], [ 7973, 3505 ], [ 8398, 3709 ], [ 8368, 4079 ], [ 8441, 4146 ], [ 8484, 4710 ], [ 9001, 4615 ], [ 9174, 4781 ], [ 9595, 4704 ], [ 9793, 4850 ], [ 9806, 5275 ], [ 9548, 5524 ], [ 9283, 5462 ], [ 8897, 5903 ], [ 8947, 6066 ], [ 8585, 6443 ], [ 8647, 6661 ], [ 8436, 6981 ], [ 8612, 7289 ], [ 8444, 7551 ], [ 8675, 7851 ], [ 8477, 8153 ], [ 8197, 8191 ], [ 8105, 8283 ], [ 7504, 8388 ], [ 7740, 8249 ], [ 7641, 7587 ], [ 7904, 7475 ], [ 8006, 6983 ], [ 7895, 6847 ], [ 8023, 6283 ], [ 8128, 6222 ], [ 8220, 5843 ], [ 7987, 5473 ], [ 8440, 5116 ], [ 8395, 4805 ], [ 7896, 4657 ], [ 7870, 4247 ], [ 7686, 4085 ], [ 7329, 4105 ], [ 7238, 4209 ], [ 7305, 4787 ], [ 6833, 4815 ]

[6263, 4608], [6131, 4192], [6240, 4055], [6114, 3514],
[6142, 3447], [6592, 3360], [6804, 3559], [7088, 3576],
[7334, 3349], [7358, 3049], [7843, 2849], [8053, 3050],
[7973, 3505], [8398, 3709], [8368, 4079], [8441, 4146],
[8484, 4710], [9001, 4615], [9174, 4781], [9595, 4704],
[9793, 4850], [9806, 5275], [9548, 5524], [9283, 5462],
[8897, 5903], [8947, 6066], [8585, 6443], [8647, 6661],
[8436, 6981], [8612, 7289], [8444, 7551], [8675, 7851],
[8477, 8153], [8197, 8191], [8105, 8283], [7504, 8388],
[7740, 8249], [7641, 7587], [7904, 7475], [8006, 6983],
[7895, 6847], [8023, 6283], [8128, 6222], [8220, 5843],
[7987, 5473], [8440, 5116], [8395, 4805], [7896, 4657],
[7870, 4247], [7686, 4085], [7329, 4105], [7238, 4209],
[7305, 4787], [6833, 4815]                             

我已经看过正则表达式来做到这一点,但是每出现 8 次逗号就进行拆分超出了我的能力范围。

如果它也能处理,则可获得加分

{ x: 10, y: 220}, { x: 130, y: 40, z: 50 }, { a: "foo" }, ...

答案1

快速解答

:s/\(\(.\{-},\)\{8}\)/\1\r/g

其中.\{-}是任何内容的非贪婪匹配,并且\{8}恰好是前面的 的 8 倍\(pattern\)

有一个回答使用gqq它也许你也会感兴趣。


添加行

let @a=':s/\(\(.\{-},\)\{8}\)/\1\r/g'

到你的 ~/.vimrc 文件,然后你可以随时使用@a并返回来运行此宏。a用任意字母 a..z 替换宏名。

相关内容