1

При написании тестов я часто хочу сравнивать сгенерированное значение с чем-то, что я сгенерировал ранее, но выгрузка вывода из моей консоли в 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]                             

Я посмотрел на регулярные выражения, чтобы сделать это, но разделение на каждое восьмое возникновение комы мне не под силу.

Бонусные баллы, если он также может справиться

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

1 ответ1

3

Быстрый ответ

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

где .\{-} - не жадное совпадение для чего-либо, а \{8} ровно в 8 раз превосходит предыдущий \(pattern\) .

Есть ответ, использующий gqq который может вас заинтересовать.


Добавьте строку

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

в ваш файл ~/.vimrc, вы можете в любой момент запустить этот макрос с помощью @a и вернуться. Замените a любой буквой a..z для имени макроса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .