С использованием функций макросов в Vim вы можете записывать и воспроизводить последовательность действий внутри редактора.
В данной статье описывается, как выполнять запись и воспроизведение внутри редактора Vi и Vim с помощью двух подробных примеров. Для ознакомления, как работать в Vim, прочитайте последнее руководство для начинающих по Vim.
Последовательность шагов записи и воспроизведения внутри Vim
- Начните запись, нажав Q, за которым следует символ нижнего регистра, чтобы назвать макрос
- Выполните любое типичное редактирование, действия внутри редактора Vim, который будет записан
- Остановить запись, нажав Q
- Воспроизведите записанный макрос, нажав @ с последующим макроименем
- Чтобы повторить макросы несколько раз, нажмите: NN@имя макроса, где NN является числом
Пример 1: Последовательность генерации номеров внутри файла с помощью Vim Макро
1. Запустите файл andreyex-test.txt для создания последовательности.
$ vim andreyex-test.txt
2. Перейдите в режим вставки и введите “1.”, Как показано ниже
Тип: Esc а затем 1.
$ vim andreyex-test.txt 1.
3. Начните запись и зарегистрируйте в истории.
Тип: Esc q затем a
- q указывает на то, чтобы начать запись
- а показывает, где хранить записи в регистре А
- когда вы сделаете ОК, он будет отображать “запись” в нижней части vi.
4. Скопировать 1-ю линию во 2-ю линию, чтобы объединить две линии с одну, как показано ниже
Тип: Esc yy затем p
- уу копирует текущую строку
- р будет вставлять строку, которая только что была скопирована
$ vim andreyex-test.txt 1. 1.
Примечание: Vim будет по- прежнему показывают запись в нижней части, как показано ниже.
5. Увеличьте число.
Тип: Control a
Размещая курсор на 2 – й линии, нажмите Ctrl + A , которое увеличивают число до 2, как показано ниже.
$ vim andreyex-test.txt 1. 2.
Примечание: Vim – по прежнему будет отображать запись в нижней части .
6. Остановить запись
Тип: q
Нажмите кнопку q, чтобы остановить запись. Вы заметите, что запись сообщения в нижней части Vim в настоящее время нет.
7. Повторите кнопку записи 98 раз.
Тип: 98@a
- Теперь повторите эту работу, набрав 98@a
- @a повторяет макрос “a” один раз.
- 98@a повторяет состояние макросов “a” 98 раз порождающие порядковый номер 1 – 100, как показано ниже, с помощью макросов.
Пример 2: Повторите Vim Macro с различными аргументами
Этот пример объясняет, как можно выполнив одну и ту же команду, с другим входом для него, т.е. одну и ту же команду, с различными аргументами.
Перед выполнением макроса: andreyex-password.sql
$ vim andreyex-password.sql Annette Warren Anthony Preston Kelly Taylor Stiller Dennis Schwartz
После записи и исполнения макроса: andreyex-password.sql
$ vim andreyex-password.sql ALTER USER Annette IDENTIFIED BY 'Annette'; ALTER USER Warren IDENTIFIED BY 'Warren'; ALTER USER Anthony IDENTIFIED BY 'Anthony '; ALTER USER Preston IDENTIFIED BY 'Preston'; ALTER USER Kelly IDENTIFIED BY 'Kelly '; ALTER USER Taylor IDENTIFIED BY 'Taylor'; ALTER USER Stiller IDENTIFIED BY 'Stiller'; ALTER USER Dennis IDENTIFIED BY 'Dennis'; ALTER USER Schwart IDENTIFIED BY 'Schwart';
1. Откройте andreyex-password.sql, который имеет только имена.
$ vim andreyex-password.sql Annette Warren Anthony Preston Kelly Taylor Stiller Dennis Schwartz
2. Запустите запись и сохранить его в регистре
Тип: q a
- q указывает на то, чтобы начать запись
- а показывает хранить записи в регистре a
- Когда вы нажмете ОК, он будет отображать сообщение записи в нижней части VI.
3. Перейдите в режиме вставки и тип ALTER USER
Тип: I (заглавное) , а затем “ALTER USER”
Поместите курсор в любом месте в первой строке, а затем нажмите I., который доставит вас к первому символу строки. Тип АLТЕR USER
4. Скопировать следующее слово (то есть название)
Тип: Esc w yw
- Нажмите клавишу Esc, а затем нажмите кнопку w, чтобы перейти к следующему слову (имя).
- yw, копирует текущее слово (имя).
5. Перейти до конца, тип IDENTIFIED BY
Тип: Esc А, сопровождаемый “IDENTIFIED BY”
- Нажмите Esc, и А, чтобы переместить курсор в конец строки, а затем введите пробел.
- Тип ” IDENTIFIED BY”
6. Вставьте скопированное имя
Тип: Esc р
Нажмите клавишу Esc, а затем введите р, чтобы вставить имя, которое было скопировано в шаге #4.
7. Завершите цитату в конце.
Тип: Esc А , followed by ‘;
Нажмите Esc, и А, чтобы перейти до конца строки, и ‘;
8. Переход к следующей строке и остановка записи.
Тип: Esc j затем q
- j, чтобы перейти к следующей строке.
- q, чтобы остановить запись
Примечание: Сообщение записи, показанное в нижней части VI теперь исчезybn. На данном этапе, andreyex-password.sql будет выглядеть следующим образом .
9. Повтор макроса с аргументами в соответствующей строке
Тип: 8 @ a
- Теперь повторите эту работу 8 раз, набрав 8@a
- @a повторяет макрос “a” один раз.
- 8@a повторяет состояние макросов “a” 8 раз завершая остальную часть строки автоматически, как показано ниже