Мені подобається використовувати глобальну команду vim для виконання таких завдань. Це стосується додавання ітерації до початку рядка або зміни символу в тексті. Це виглядає складніше, ніж інші рішення, але є досить гнучким шаблоном, який можна використовувати, коли вам це зручно, і його легко модифікувати без особливої думки.
Спочатку виберіть діапазон (які рядки ви бажаєте застосувати). Зазвичай я використовую позначки (наприклад, 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
об'єднаного з a .
. Як правило, ви можете це робити будь-що (замініть ярлик Item
цифрою, наприклад).
|let i=i+1
Незважаючи на те, що панель запускає нову команду, вона встановлює другу команду, яку слід запускати в межах глобальної команди, а не після того, як глобальна буде завершена. Результат - приріст, i
перш ніж наступний рядок буде оброблений g. Тут є ще одне місце гнучкості. Модифікація i може бути будь-якою (приріст на 2, виклик функції, яка генерує наступний елемент послідовності Фібоначчі, як би там не було).
awk
це, мабуть, інструмент для цієї роботи. Але я на Windows (зітхає).