Це досить цікавий запит, оскільки немає "режиму" для запису макросу. Після перекопування деяких документів я знайшов наступне вusr_10
Ви починаєте з переходу до першого символу першого рядка. Далі ви виконайте такі команди:
qa Почніть запис макросу в регістр a .
^ Переміщення до початку рядка.
я # включаю "Вставити рядок #include" на початку рядка.
$ Перемістіть до кінця рядка.
a "Додайте символу подвійного лапки (") до кінця рядка.
j Перехід до наступного рядка.
q Зупиніть записувати макрос.
Мені важливим моментом був рядок про "Почати запис макросу в регістр"
Оскільки кожен макрос буде збережено до реєстру за замовчуванням, я сподівався, що ми зможемо побачити його у :reg
списку. Виявляється, це працює як шарм!
Приклад:
У звичайному режимі: qaisomething<Esc>
а всередині :reg
ми бачимо запис!
"a isomething^[
Маючи ці знання, ви повинні мати можливість "шпигувати" за регістрами, щоб підтвердити, що макрос записується (використовуйте названий реєстр для кожного запису [карта q
завжди використовувати той самий реєстр (або щось подібне)]
Якщо у вас виникли проблеми, дайте мені знати, і я спробую допомогти вам (оскільки ця функціональність і для мене нова: D)
редагувати
Для вирішення проблеми використання реєстру, який використовується під час yank, я б рекомендував переглянути спеціальний тип реєстру, який ви можете використовувати лише для vimL
написаного вами запису (жоден yank ніколи не буде задіяний у реєстрі ( "ay
))
Ось трохи інформації :help registers
про доступні регістри
Існує десять типів регістрів: регістри E354
Неназваний реєстр ""
10 нумерованих регістрів "0 до" 9
Невеликий регістр видалення "-
26 названих регістрів "a до" z або "A до" Z
три регістри лише для читання ":,"., "%
альтернативний регістр буфера "#
вираз регістра "=
Регістри вибору та падіння "*," + і "~
Регістр чорної діри "_
Останній реєстр шаблонів пошуку "/
Якщо припустити, що у вас є реєстр, який ви зараз будете використовувати, питання стає "як мені знати, коли запис припинився?". Для того, щоб подбати про це я взяти б поглянути на autocmd-event
для CursorHold
; примітка в довідкових документах виглядає досить багатообіцяючою (я б спробував розібратися, як я міг би диференціювати нормальний cursorHold від непрацюючого / неіснуючого події, що відбувається під час запису вашого реєстру для цілей макросу)
CursorHold
Якщо користувач не натискає клавішу протягом часу, визначеного "оновленням часу". Не повторюється, поки користувач не натисне клавішу (тобто не спрацьовує кожен "updatetime" мс, якщо ви залишаєте Vim робити каву. :) Див. | CursorHold-example | для попереднього перегляду тегів. Ця подія запускається лише у звичайному режимі. Він не спрацьовує під час очікування введення аргументу команди чи руху за оператором. Під час запису подія CursorHold не спрацьовує. | q |