С использованием функций макросов в 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 раз завершая остальную часть строки автоматически, как показано ниже
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.