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