Vim Macro – Wrap Every Line in Parentheses

 

Условие задания (русский)

Дан текстовый файл ex02.txt, содержащий около 1000 строк случайных символов. Необходимо с помощью Vi/Vim/NeoVim:

  1. Обернуть каждую строку файла в круглые скобки, чтобы, например, ABC123 превратилось в (ABC123).
  2. Выполнить преобразование всего файла с помощью записанного макроса, а не редактировать строки вручную по одной.
  3. Сохранить изменённый файл под именем ex02.edit.txt.
  4. Записать использованный макрос (последовательность нажатий клавиш) в отдельный текстовый файл 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:

  1. Wrap each line of the file in parentheses, so that e.g. ABC123 becomes (ABC123).
  2. Use a recorded macro to transform the whole file instead of manually editing every line.
  3. Save the modified file under the name ex02.edit.txt.
  4. Store the macro you used (the sequence of keystrokes) in a separate text file vi_macro.txt.
Before / After example
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 Макрос в регистре a Подходит для 1000+ строк

1. Открыть исходный файл в Vim

vim ex02.txt

2. Убедиться, что курсор стоит на первой строке файла

3. Начать запись макроса в регистр a

qa

Это означает: «начать запись макроса в регистр a».

4. Действия макроса для одной строки

I(Esc A)Esc j
  • I – перейти в начало строки и войти в режим вставки.
  • ( – вставить открывающую скобку.
  • Esc – выйти из режима вставки.
  • A – перейти в конец строки и войти в режим вставки.
  • ) – вставить закрывающую скобку.
  • Esc – снова выйти из режима вставки.
  • j – перейти на следующую строку.

5. Остановить запись макроса

q

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.