vim столбец с возрастающими числами
Обычно я имею дело с файлами, которые выглядят так:
0.98 3.45
2.45 3.90
.
.
.
4.56 8.45
скажем, с 100 строк. Я хотел бы получить что-то вроде этого:
1 0.98 3.45
2 2.45 3.90
.
.
.
100 4.56 8.45
с первым столбцом целых чисел. Обычно я создаю файл столбца только с цифрами 1,2...100, а затем выбираю этот блок и вставляю его в файл с двумя столбцами. Поскольку число строк почти всегда различно, мой подход кажется очень медленным.
У вас есть какие-нибудь предложения?
Благодарю.
5 ответов
:%s/^/\=printf('%-3d ', line('.'))
Дополнительная информация:
:help :s\=
:help printf()
:help line()
Вот альтернативная версия обычного режима только для vim. С вашим курсором в первом столбце, в первой строке:
<C-v>GI0 <ESC>gvg<C-a>
-
<C-v>
режим визуальной блокировки (:help visual-block
) -
G
находится внизу экрана (:help G
) -
I
запускает режим вставки в строке 1 (:help v_b_I
) -
0
введите буквальный ноль и буквенный пробел -
<ESC>
вернуться в обычный режим -
gv
повторно выберите последний визуальный выбор (весь столбец 1) (:help gv
) -
g<C-a>
последовательно увеличивать все числа в выборе (:help v_g_CTRL-A
)
Получается это
0.98 3.45
2.45 3.90
4.56 8.45
в это
1 0.98 3.45
2 2.45 3.90
3 4.56 8.45
Я считаю VisIncr бесценным для подобных операций (вот версия GitHub для тех, кто использует Vundle или NeoBundle). Плагин "облегчает создание столбца увеличения или уменьшения чисел, дат или названий дней". Ниже приведен пример добавления номеров строк:
Выберите первый столбец файла в режиме визуального блока:
gg<C-v>G
Вставьте начальный номер (в данном случае 1) и разделитель столбцов (я предполагаю, что Tab здесь):
I1<Tab><Esc>
Снова выберите первый столбец файла:
gv
Запустите команду VisIncr, чтобы увеличить числа:
:I<CR>
Вместо этого вы можете выровнять цифры по правому краю другой командой:
:II<CR>
Увеличивать даты, буквы, шестнадцатеричные и римские цифры так же просто.
:%!cat -n
это быстрое решение. С последующим
:%s/^\s*//g
это дает вам то, что вы хотите довольно быстро.
Для создания столбца с последовательным номером, nl
твой друг. Предположим, вы хотите создать из 1
в n
:
Создать файл с
n
линии в vim.Бежать
:%!nl
,
Теперь вы можете использовать <C-v>
выбрать столбец чисел и скопировать их в другом месте.