2017-02-18 3 views
0

Как ввести новую строку после каждых 4 запятых в vim.Введите новую строку после 4 запятых в vim

Мои данные выглядят примерно так.

0x0, 0x2, 0x5, 0x1, 0x4, 0x1, 0x8, 0x0, 0xca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0xff, 0xfe, 0x0, 0x64, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x2c, 0x0, 0x29, 0x1, 0x0, 0x5, 0x6, 0x4, 0x6, 0x5, 0x7, 0x3, 0x6, 0x2, 0x7, 0xd, 0x6, 0x4, 0x6, 0xf, 0x6, 0xc, 0x6, 0x5, 0x6, 0x4, 0x3, 0x0, 0x5, 0x1, 0x5, 0x3, 0x5, 0x9, 0x4, 0x3, 0x5, 0x1, 0x3, 0x2, 0x0, 0x1, 0x4, 0x3, 0x4, 

Я хочу, чтобы он отформатирован так, что каждый 4 запятой новой строки вставляется, так что данные будут выглядеть следующим образом

0x0, 0x2, 0x5, 0x1, 
0x4, 0x1, 0x8, 0x0, 
0xca, 0x0, 0x0, 0x0, 
0x0, 0x0, 0x0, 0x10, 
0x0, 0x0, 0x0, 0x10, 
0xff, 0xfe, 0x0, 0x64, 
0x4, 0x0, 0x0, 0x64, 
0x0, 0x0, 0x0, 0x14, 
0x0, 0x0, 0x0, 0x2c, 
0x0, 0x29, 0x1, 0x0, 
0x5, 0x6, 0x4, 0x6, 
0x5, 0x7, 0x3, 0x6, 
0x2, 0x7, 0xd, 0x6, 
0x4, 0x6, 0xf, 0x6, 
0xc, 0x6, 0x5, 0x6, 
0x4, 0x3, 0x0, 0x5, 
0x1, 0x5, 0x3, 0x5, 
0x9, 0x4, 0x3, 0x5, 
0x1, 0x3, 0x2, 0x0, 
0x1, 0x4, 0x3, 0x4, 

Я знаю, что это может быть сделано вручную, но я должны делать это 4-5 раз в день, и это достигает точки, где ищет более легкое решение.

+0

Просто обратите внимание, что есть также специальный сайт сестры vi & vim: http: //vi.stackexchange.com/ – IMSoP

ответ

1

вы можете сделать макрос

на первый символ в строке

qq4f Л.Р. Введите @qq

QQ запускает новый макрос с именем д.
4f, находит далее ,
л перемещается справа от него
г ввести заменяет пространство с вводом
@q вызывает макрос вы только что сделали рекурсивно называть его
д, чтобы закончить запись

Тогда просто @q, чтобы отформатировать его.

д может быть любая буква

Это дает мне

0x0, 0x2, 0x5, 0x1, 
0x4, 0x1, 0x8, 0x0, 
0xca, 0x0, 0x0, 0x0, 
0x0, 0x0, 0x0, 0x10, 
0x0, 0x0, 0x0, 0x10, 
0xff, 0xfe, 0x0, 0x64, 
0x4, 0x0, 0x0, 0x64, 
0x0, 0x0, 0x0, 0x14, 
0x0, 0x0, 0x0, 0x2c, 
0x0, 0x29, 0x1, 0x0, 
0x5, 0x6, 0x4, 0x6, 
0x5, 0x7, 0x3, 0x6, 
0x2, 0x7, 0xd, 0x6, 
0x4, 0x6, 0xf, 0x6, 
0xc, 0x6, 0x5, 0x6, 
0x4, 0x3, 0x0, 0x5, 
0x1, 0x5, 0x3, 0x5, 
0x9, 0x4, 0x3, 0x5, 
0x1, 0x3, 0x2, 0x0, 
0x1, 0x4, 0x3, 0x4, 

Когда закончена, если вы наберете :reg

должна быть линия simiar к

"q 4f,lr^[email protected] 
+0

Спасибо за ответ. –

2
s/\v([^,]+,){4}\zs /\r/g 
  • \v очень магия, чтобы избежать того, чтобы избежать метасимволов ({ и т.д.
  • ([^,]+,){4}\zs без запятой символов следует запятая, повторяется четыре раза. Затем \zs, чтобы отметить начало матча, избавляет от оклейки, что захваченный до сих пор в замене секции
  • пробела после 4 запятой заменяются новой строкой
  • g модификатора, чтобы заменить все такие матчи


вы можете отобразить эту замену, чтобы работать на текущей строке ключа, скажем F2 функциональную клавишу

nnoremap #2 :s/\v([^,]+,){4}\zs /\r/g<CR> 

Каждый раз при нажатии F2 в нормальном режиме, замена будет выполнена

+0

Спасибо за ваш ответ –