Могу ли я повторить макрос с .
командой? Например, я хотел бы иметь возможность набрать:
@q...
и это эффективно звонить @q
4 раза. С поведением по умолчанию, это работает только тогда , когда «д» имеет одну команду, например dw
, x
или iHello<esc>
. (Это имеет смысл, поскольку «.» Повторяет последнее изменение , а не последние нажатия клавиш / команду)
Я также хотел бы иметь эту работу с подсчетами. Например, набрав:
3@q.
будет эффективно так же, как работает @q
6 раз. Как я могу настроить это поведение?
Enter
@@
повторяет последний макрос, поэтому, если вы спрашиваете это ради отображений и тому подобного, он должен работать для вас.Ответы:
Дайте это попробовать. Это перераспределяется
@
так, чтоg@
(плюс фиктивное движениеl
) используется впоследствии, таким образом становясь последним оператором и подлежащим повторению с.
.Я пытался разобраться с таким количеством угловых случаев, о которых только могу подумать. Вы можете повторить
@:
с.
. Считает@
или.
сохраняется для последующих нажатий.
.Это сложно, и я не уверен, что что-то не сломается где-то по пути. Так что никаких гарантий, гарантий или обещаний с этим.
Лично я в порядке , имеющий разницу между мелкозернистых повторами
.
для последнего изменения, а также макро - повторами@@
.РЕДАКТИРОВАТЬ
Я решил, что, зайдя так далеко, я также могу добавить некоторый дополнительный код, который позволит
.
сразу после записи макроса нажать его для воспроизведения.источник
.vimrc
).
сразу после записи.\<plug>qstop
должно быть раньшеq
в функции QStartДля повторения вашего последнего макроса вы можете использовать,
@@
так3@@
что, по сути, запускается @q 3 раза Однако @ нажатия клавиш могут быть громоздкими, поэтому в моем .vimrc у меня есть строки:Это позволяет мне использовать свой лидерный ключ (,) плюс m для запуска последнего макроса. Затем вам может предшествовать это число, чтобы повторить макрос.
Теперь
3,m
эквивалентно3@@
. Та же сумма ключей и нет необходимости удерживать Shift.РЕДАКТИРОВАТЬ : После переосмысления этого я придумал новый макрос.
nmap <leader>. @@
Это также работает, когда ему предшествует число, так3,.
что теперь3@@
хотелось бы увидеть эту работу, чтобы я мог передать макрос буквы и повторить этот макрос вместо последнего макроса.источник
3@q.
запустить@q
6 раз. Это не делает этого.3@q.
? Казалось бы, вы могли бы просто добавить его с подсчетом. Я склонен устанавливать поиск перед началом макроса, а затем использоватьn
в макросе, чтобы перейти к началу, где он может быть воспроизведен.Вы можете записать использование макроса в другом макросе и повторить это.
Теперь все
3@r
равно что бегать@q
шесть раз.источник
По умолчанию
space
в vim указано «переместить правый 1 символ», который уже покрытl
, поэтому я переназначил пространство для повторного запуска макроса из буфера q:Чтобы использовать, просто
qq
сначала запишите макрос , остановите запись,q
а затем нажмите,space
чтобы воспроизвести.источник
Поскольку я не использую
,
и не люблю простое решение для ввода, это работает для меня:источник