Это довольно любопытный запрос, так как нет «режима» для записи макроса. После того, как копаться в некоторых документах я нашел следующийusr_10
Вы начинаете с перехода к первому символу первой строки. Далее вы выполняете следующие команды:
qa начать запись макроса в регистр a .
^ Перейти к началу строки.
я # включить "Вставить строку #include" в начале строки.
$ Перейти к концу строки.
a «Добавьте символ двойной кавычки (») в конец строки.
j Перейти к следующей строке.
Остановите запись макроса.
Самой выдающейся вещью для меня была строка «Начать запись макроса в регистр»
Поскольку каждый макрос будет сохранен в регистр по умолчанию, я надеялся, что мы сможем увидеть его в :reg
списке. Оказывается, это работает как шарм!
Пример:
В обычном режиме: qaisomething<Esc>
и внутри :reg
мы видим запись!
"a isomething^[
Обладая этим знанием, вы должны иметь возможность «шпионить» за регистрами, чтобы подтвердить, что макрос записывается (используйте именованный регистр для каждой записи [карта, q
чтобы всегда использовать один и тот же регистр (или что-то подобное)]
Если у вас возникнут проблемы, дайте мне знать, и я постараюсь вам помочь (поскольку эта функциональность для меня тоже нова: D)
редактировать
Для решения вопроса регистра используется во время рывка я рекомендую заглянуть в особый тип регистра , который можно использовать только для vimL
вас писать (не рывка бы когда - либо заниматься в реестре ( "ay
))
Вот немного информации :help registers
о доступных регистрах
Существует десять типов регистров: регистры E354
Безымянный регистр ""
10 пронумерованных регистров "от 0 до" 9
Небольшой регистр удаления "-
26 именованных регистров "от А до" Z или от "А до" Z
три регистра только для чтения ":,"., "%
регистр альтернативного буфера "#
регистр выражений "=
Регистры выбора и удаления "*," + и "~
Регистр черной дыры "_
Последний шаблон поиска "/
Предполагая, что у вас есть регистр, который вы собираетесь использовать сейчас, возникает вопрос «как узнать, когда запись остановлена?». Для того, чтобы позаботиться об этом я взять бы взглянуть на autocmd-event
для CursorHold
; примечание в справочных документах выглядит довольно многообещающе (я бы попытался выяснить, как я могу отличить обычное cursorHold от события бездействия / несуществующего, которое происходит, когда ваш регистр записывается для целей макроса)
CursorHold
Когда пользователь не нажимает клавишу в течение времени, указанного в «время обновления». Не запускается повторно до тех пор, пока пользователь не нажмет клавишу (то есть не будет запускать каждые «время обновления» мс, если вы оставите Vim, чтобы сделать кофе. :) См. | CursorHold-example | для предварительного просмотра тегов. Это событие вызывается только в обычном режиме. Он не срабатывает при ожидании ввода аргумента команды или движения после оператора. Во время записи событие CursorHold не срабатывает. | Д |