9

Представьте, что я записал макрос, а затем я иногда начал записывать макрос в тот же регистр. Можно ли прервать запись, чтобы исходный макрос сохранился в реестре?

Я знаю, что могу сделать :let @b=@a скопировать макрос из регистра a в регистр b и, таким образом, сохранить его, но, может быть, есть более простой способ?

2 ответа2

6

Когда вы записываете макрос, регистр сначала очищается и заполняется по мере того, как вы идете, поэтому очень маловероятно, что существует встроенный способ сохранить ваш предыдущий макрос, пока вы находитесь в середине другой записи. То есть не нужно писать обертку вокруг q , то есть.

Я и многие люди используем временный регистр ( например , @q ) для всех наших одноразовых записей. Может тебе тоже стоит.

6

Как отметил @Trendfischer в своем комментарии, текущее поведение vim не является (больше?) очистить регистр при первом нажатии q .

Теперь, если вы выбрали неправильный регистр, вот что вы можете сделать:

  • не выходите из режима записи (пока),
  • создать пустую строку,
  • вставьте перезаписываемый регистр (если вы записываете в регистр q , это "qp),
  • теперь выйдите из режима записи (q)
  • выберите строку, которую вы вставили выше (без метки конца строки: 0v$h ; не используйте V)
  • вставьте его в регистр, который вы перезаписали ("qy если вы используете регистр q ; опять же: не используйте строчную копию Y).
  • Теперь ваш старый макрос вернулся в реестр, и вы можете перезапустить запись нового макроса в правильном регистре.

Конечно, приложив немного усилий, вы можете спасти как старый, так и новый макрос (но вы должны запустить процесс, прежде чем нажимать второй раз клавишу q): просто вставьте то, что вы записали, и нажмите в "новом"/"правильный" регистр.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .