Как добавить номера строк в ряд строк в vim? Не как в ": set nu" - это просто отображает числа, но не добавляет их в файл.
Добавить номера строк в исходный код в vim
Ответ 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
или вставка визуального блока), выделите этот столбец в режиме визуального блока и выполните одну из команд из плагина.