Добавить номера строк в исходный код в vim

Как добавить номера строк в ряд строк в vim? Не как в ": set nu" - это просто отображает числа, но не добавляет их в файл.

Ответ 1

С

:%s/^/\=line('.')/

EDIT: подвести итоги.

Эта команда может быть изменена настолько, насколько вам хочется.


Предположим, вы хотите добавить числа перед строками из визуального выделения (V + move), и вы хотите, чтобы нумерация начиналась с 42.

:'<,'>s/^/\=(line('.')-line("'<")+42)/

Если вы хотите добавить строку между номером и старым текстом из строки, просто соедините (с помощью . в VimL) это числовое выражение:

:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/

Если вам нужно, чтобы он сортировался как текст, вам может понадобиться выполнить нулевую оценку результатов, что можно сделать с помощью printf для 0001, 0002... вместо 1, 2... например:

:%s/^/\=printf('%04d', line('.'))/

В любом случае, если вам нужна дополнительная информация, просто откройте vim help: :h :s и следуйте ссылкам (|subreplace-special|,..., |submatch()|)

Ответ 2

cat -n добавляет номера строк к своему вводу. Вы можете передать текущий файл в cat -n и заменить текущий буфер на то, что он печатает на stdout. К счастью, это запутанное решение составляет менее 10 символов в vim:

 :%!cat -n

Или, если вы хотите просто подсекремент, визуально выберите область и введите это:

 :!cat -n

Это автоматически помещает маркеры визуального выделения и будет выглядеть так, как только вы его набрали:

 :'<,'>!cat -n

Чтобы стереть номера строк, я рекомендую использовать control-v, что позволит вам визуально выбрать прямоугольник, затем вы можете удалить этот прямоугольник с помощью x.

Ответ 3

В системе GNU: с внешним двоичным nl:

:%!nl

Ответ 4

С Unix-подобной средой вы можете использовать cat или awk для создания номера строки легко, потому что vim имеет дружественный интерфейс с оболочкой, поэтому все работает в vim, а также в оболочке.
Из Vim Tip28:

:%!cat -n

или

:%!awk '{print NR,$0}'

Но, если вы используете vim в MS-DOS, win9x, win2000, вы потеряете этот инструментарий. здесь очень простой способ архивировать это только с помощью vim:

fu! LineIt()
  exe ":s/^/".line(".")."/"
endf

Или последовательность, составленная с помощью алфавита, так же проста, как и выше:

exe "s/^/".nr2char(line("."))."/" 

Вы также можете использовать subst:

:g/^/exe ":s/^/".line(".")."^I/"

Вы также можете печатать строки, не добавляя их в файл:

"Иногда бывает полезно, особенно, редактировать большие исходные файлы, чтобы печатать номера строк на бумаге.
Для этого вы можете использовать опцию :set printoptions=number:y для активации и :set printoptions=number:n для деактивации этой функции.
Если номер строки должен всегда печататься, поместите строку set printoptions=number:y в vimrc."

Ответ 5

Сначала вы можете удалить существующие номера строк, если вам нужно:

:%s/^[0-9]*//

Затем вы можете добавить номера строк. NR относится к текущему номеру строки, начиная с единицы, поэтому вы можете выполнить некоторую математику, чтобы получить нумерацию, которую вы хотите. Следующая команда дает четыре цифры цифр:

:%!awk '{print 1000+NR*10,$0}'

Ответ 6

Плагин "VisIncr" хорош для вставки столбцов дополнительных чисел в целом (или букв, дат, римских цифр и т.д.). Вы можете управлять форматом чисел, заполнением и т.д. Поэтому вставьте "1" перед каждой строкой (через :s или :g или вставка визуального блока), выделите этот столбец в режиме визуального блока и выполните одну из команд из плагина.