макрос vim не записывает команды перемещения в конце - PullRequest
2 голосов
/ 27 февраля 2012

У меня есть блок текста, похожий на следующий -

blah blah 1 blah blah
blah 1 blah 1 blah

Я хочу скопировать его n раз, но увеличивать целое число (1 выше) каждый раз, когда я вставляю.Что-то вроде -

blah blah 1 blah blah
blah 1 blah 1 blah

blah blah 2 blah blah
blah 2 blah 2 blah

blah blah 3 blah blah
blah 3 blah 3 blah

Я помещаю курсор в начало блока и начинаю запись макроса в формате reg с помощью 'qa' и набираю 'y2jp ^ A j0 ^ A ш ^ A k0.По-английски - скопируйте и вставьте блок, увеличьте каждое число и вернитесь к началу вновь вставленного блока, чтобы можно было снова запустить макрос.

Все отлично работает, кроме части 'k0' в конце, он не перемещает курсор в начало вновь вставленного блока.Кто-нибудь может указать, что я делаю не так?

Редактировать

@ sehe Я получаю сообщение, когда запускаю предложенный вами макрос -

блабла 1 бла бла бла 1 бла 1 бла бла бла 1 бла бладж0.w.yk0 бла 1 бла 1 бла

Похоже, что vim все еще находится в режиме вставки после ^ A.
: - /

Ответы [ 3 ]

4 голосов
/ 27 февраля 2012

Я думаю, что есть лучшие способы добиться того, что вы делаете, и я на самом деле не смотрел на детали того, что у вас не получается, просто вот макрос, который работает для меня:

2Yjp ^ A j0.w.yk0

Я думаю, что вы делали все наоборот (вставляя сверху?) - проблема могла заключалась в том, что курсор не мог двигаться вверх до первой строки (? Не проверял) .

В любом случае, после 20@a я получаю:

blah blah 1 blah blah
blah 1 blah 1 blah
blah blah 2 blah blah
blah 2 blah 2 blah
blah blah 3 blah blah
blah 3 blah 3 blah
blah blah 4 blah blah
blah 4 blah 4 blah
blah blah 5 blah blah
blah 5 blah 5 blah
blah blah 6 blah blah
blah 6 blah 6 blah
blah blah 7 blah blah
blah 7 blah 7 blah
blah blah 8 blah blah
blah 8 blah 8 blah
blah blah 9 blah blah
blah 9 blah 9 blah
blah blah 10 blah blah
blah 10 blah 10 blah
blah blah 11 blah blah
blah 11 blah 11 blah
blah blah 12 blah blah
blah 12 blah 12 blah
blah blah 13 blah blah
blah 13 blah 13 blah
blah blah 14 blah blah
blah 14 blah 14 blah
blah blah 15 blah blah
blah 15 blah 15 blah
blah blah 16 blah blah
blah 16 blah 16 blah
blah blah 17 blah blah
blah 17 blah 17 blah
blah blah 18 blah blah
blah 18 blah 18 blah
blah blah 19 blah blah
blah 19 blah 19 blah
blah blah 20 blah blah
blah 20 blah 20 blah
blah blah 21 blah blah
blah 21 blah 21 blah
2 голосов
/ 27 февраля 2012

Я не уверен, что не так с вашим использованием k0, но чтобы вернуть курсор назад, вам может оказаться проще использовать метку.Например:

2Yjpma ^ A j0 ^ A w ^ A `a

0 голосов
/ 27 февраля 2012

почему бы и нет:

p
:,+2s/\d\+/\=1+submatch(0)/g "replaces digits by 1+value on all occurences till line + 2
:-2,y "yanks from line - 2 till current line (=last line with replacement)

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...