2013-08-13 4 views
6

обычно я имею дело с файлами, которые выглядят следующим образом:ВИМ колонка увеличения числа

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 и затем выбираем этот блок и вставляем его в файл с двумя столбцами. Поскольку число строк равно , почти всегда мой подход кажется очень медленным.

Есть ли у вас какие-либо предложения?

Спасибо.

+0

Повторяющийся вопрос: http://stackoverflow.com/questions/252766/add-line-numbers-in-vim – Edward

+0

@Edward Эти ответы не говорят о выравнивании. – mhinz

+1

@mhinz На самом деле в вопросе не упоминается выравнивание, и пример не выровнен. (Плюс я печатал, пока вы были, и поэтому не видел вашего ответа.) Но если бы я это делал, я бы хотел, чтобы номера были выровнены по правому краю, поэтому я рад, что вы показали мне то, что я не сделал знать. Приветствия. – Edward

ответ

6
:%s/^/\=printf('%-3d ', line('.')) 

Дополнительная информация:

:help :s\= 
:help printf() 
:help line() 
3
:%!cat -n 

является быстрым решением. В начало страницы

:%s/^\s*//g 

Это дает вам то, что вы хотите довольно быстро.

+0

если использование внешняя команда/инструмент. 'nl' будет лучше, чем' cat -n', он предоставляет опции формата – Kent

+0

@Kent, вы совершенно правы. Однако мы даже не знаем, имеет ли OP доступ к 'cat' или' nl', поэтому ни тот, ни другой не могут быть ему полезны. – romainl

2

Я нахожу VisIncr неоценимым для подобных операций (здесь the GitHub version для тех, кто использует Vundle или NeoBundle). Плагин «облегчает создание столбца увеличения или уменьшения числа, дат или дней». Пример добавления номеров строк следующим образом:

Выберите первый столбец файла в режиме визуального блока:

gg<C-v>G 

Вставьте начальный номер (1 в этом случае) и разделитель столбцов (Я принимаю Вкладка здесь):

I1<Tab><Esc> 

Выделите первый столбец файла:

gv 

Выполнить команду VisIncr увеличить число:

:I<CR> 

Вы можете правой кнопкой оправдает номера вместо этого с другой командой:

:II<CR> 

Инкрементирование даты, письма, шестнадцатеричном и римскими числами так же, как легко.