Vim Macro – Wrap Every Line in Parentheses
Условие задания (русский)
Дан текстовый файл ex02.txt, содержащий около 1000 строк случайных символов. Необходимо с помощью Vi/Vim/NeoVim:
- Обернуть каждую строку файла в круглые скобки, чтобы, например,
ABC123превратилось в(ABC123). - Выполнить преобразование всего файла с помощью записанного макроса, а не редактировать строки вручную по одной.
- Сохранить изменённый файл под именем
ex02.edit.txt. - Записать использованный макрос (последовательность нажатий клавиш) в отдельный текстовый файл
vi_macro.txt.
До: wyTKFR15ZcP8I6ixcHB+n4/toSjQkW88aCTyeKB8Jmi7NCv1UHrOc3+mcRDtpZ1G/mAB
После: (wyTKFR15ZcP8I6ixcHB+n4/toSjQkW88aCTyeKB8Jmi7NCv1UHrOc3+mcRDtpZ1G/mAB)
Ограничения/требования:
- Нельзя редактировать файл вручную строка за строкой – нужно использовать макрос.
- Нельзя использовать внешние программы (sed, awk и т.п.) – только Vim.
- Решение должно показывать умение работать с макросами и регистрами Vim.
Task description (English)
You are given a text file ex02.txt that contains about 1000 lines of random characters. Using Vi/Vim/NeoVim, you must:
- Wrap each line of the file in parentheses, so that e.g.
ABC123becomes(ABC123). - Use a recorded macro to transform the whole file instead of manually editing every line.
- Save the modified file under the name
ex02.edit.txt. - Store the macro you used (the sequence of keystrokes) in a separate text file
vi_macro.txt.
Before: wyTKFR15ZcP8I6ixcHB+n4/toSjQkW88aCTyeKB8Jmi7NCv1UHrOc3+mcRDtpZ1G/mAB
After: (wyTKFR15ZcP8I6ixcHB+n4/toSjQkW88aCTyeKB8Jmi7NCv1UHrOc3+mcRDtpZ1G/mAB)
Constraints:
- Do not edit all lines manually; you must use a macro.
- No external tools (sed, awk, etc.) – only pure Vi/Vim.
- The solution must demonstrate proper use of registers and macros in Vim.
Решение второго задания – макрос Vim
1. Открыть исходный файл в Vim
vim ex02.txt
2. Убедиться, что курсор стоит на первой строке файла
3. Начать запись макроса в регистр a
Это означает: «начать запись макроса в регистр a».
4. Действия макроса для одной строки
I– перейти в начало строки и войти в режим вставки.(– вставить открывающую скобку.Esc– выйти из режима вставки.A– перейти в конец строки и войти в режим вставки.)– вставить закрывающую скобку.Esc– снова выйти из режима вставки.j– перейти на следующую строку.
5. Остановить запись макроса
6. Применить макрос ко всем оставшимся строкам
Если в файле около 1000 строк, достаточно выполнить макрос примерно 999 раз. В Vim:
999@a
@a – выполнить макрос из регистра a; 999@a – повторить его 999 раз.
7. Сохранить отредактированный файл как ex02.edit.txt
:w ex02.edit.txt
8. Содержимое файла vi_macro.txt
В этот файл записывается последовательность клавиш макроса, например:
qaI(<Esc>A)<Esc>jq
Это текстовое представление макроса: начать запись в a, обернуть строку в скобки, перейти на следующую строку, остановить запись.
Итоговые файлы для сдачи задания:
ex02.edit.txt– каждая исходная строка обёрнута в круглые скобки.vi_macro.txt– строка с макросом, использованным в Vim.