Мне нравится использовать команду vim global для выполнения подобных задач. Это относится к добавлению итерации в начало строки или изменению символа в тексте. Он выглядит сложнее, чем другие решения, но это довольно гибкий шаблон, который можно использовать, когда он вам удобен, и его легко изменить, не задумываясь.
Во-первых, выберите свой диапазон (какие линии вы хотите применить это). Я обычно использую метки (например, ma
в первой строке и mb
во второй, но вы также можете использовать номера строк или визуальный выбор), затем введите модификацию следующей команды (в настоящее время настроена для вашего варианта использования)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
Деконструкция
:let i=1
Это устанавливает переменную i
с начальным значением. Обычно списки начинаются с 1, поэтому я устанавливаю i в 1.
|
Бар запускает новую команду
'a,'b
Это устанавливает диапазон следующей команды. Я иду от отметки a
к отметке b
, которая будет установлена в первой и последней строке вашего списка.
g/^/
Это глобальная команда. Он ищет в файле (или диапазоне) заданное регулярное выражение и выполняет оставшуюся часть командной строки в каждой строке, которая соответствует. Я сопоставляю каждую строку в поиске «начало строки». Если у вас был текст, как
Item some txt
other text
Item second item
whatever
Item third
и только хотите поставить эти метки перед Item
и игнорировать другие строки, сделать g/Item/
или g/^Item/
вместо этого (при условии буквального текста элемента)
s/^/\=i.". "/
Это выполняет регулярное выражение для замены начала строки значением i
сцепленного с .
. Как правило, вы можете сделать это с чем угодно (например, заменить метку Item
с номером).
|let i=i+1
Даже если панель запускает новую команду, она устанавливает вторую команду для запуска в глобальной команде, а не после завершения глобальной. В результате мы увеличиваем значение i
перед обработкой следующей строки g. Вот еще одно место гибкости. Модификация i может быть чем угодно (увеличить на 2, вызвать функцию, которая генерирует следующий элемент последовательности Фибоначчи, что угодно).
awk
вероятно инструмент для этой работы. Но я на Windows (вздох).