Примітка. Я припускаю, що ви використовуєте a
реєстр для всієї цієї відповіді, але ви можете використовувати будь-який реєстр
Примітка2: <1b>
є Esc; ви можете вставити це за допомогою Ctrl+vі потім Esc. Він також може відображатися як ^[
(залежно від display
налаштування).
Це не відображення; тож має сенс, що :map
це не працює. Він записується в реєстр, і ви можете його бачити та редагувати, як і будь-який реєстр.
Все, що потрібно зробити q- це очистити цей реєстр і додати до нього будь-яке натискання клавіш " , і все, що потрібно зробити @- це " оцінити регістр як команди " .
У макросі немає нічого "іншого", ви можете викликати будь-який реєстр як макрос.
Для перегляду просто використовуйте:
:echo @a
Як і будь-який реєстр.
Ви також можете використовувати :registers
для перегляду всіх регістрів.
Для редагування ви можете виконати кілька дій:
Найпростіший спосіб вам просто призначити @a
:
:let @a='iasd<1b>'
Це запустить режим вставки ( i
), вставлення asd
та повернення до нормального режиму.
Це не дуже корисно для широкого редагування; ви можете використовувати функції (тобто substitute()
), або, можливо, щось додати ( :let @a=@a . 'more'
), але змінити щось посередині не так просто.
Я виявив, що найкращим способом для цього є запуск нового буфера з :split
або :tabnew
редагування реєстру, вставивши його туди, відредагувавши його, а потім скопіювавши його назад.
Ви можете використовувати, "apякий буде вставляти текст у буфер (де a
ваш реєстр):
iThis is A<1b>
Тепер я можу просто змінити рядок на:
iThis is an edited macro<1b>
Тоді я ^v$"ayдбаю (копіюю) цей рядок до a
реєстру:
- ^ для початку рядка
- v для візуального режиму
- $ для кінця рядка
- "ay виберіть вибір для реєстрації
a
За бажанням ви можете це зробити без використання візуального режиму за допомогою ^"ay$.
Тепер ви можете використовувати @a, як ніби це те, що ви спочатку записали.
Ви також можете просто використовувати yy, і тоді @", що трохи швидше. Це також скопіює зворотний новий рядок, і може спричинити побічні ефекти ... Ще один спосіб зробити це швидше - використовувати макрос :-)
Enter
в кінці запису. У багатьох випадках це може бути доброякісним, але в сценаріях, коли ви ретельно склали положення курсору в кінці запису, це може вплинути на повторюваність.