Примітка. Я припускаю, що ви використовуєте 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в кінці запису. У багатьох випадках це може бути доброякісним, але в сценаріях, коли ви ретельно склали положення курсору в кінці запису, це може вплинути на повторюваність.