Существует два возможных способа сделать это без использования внешних инструментов: макрос или Vim-скрипт. Первый способ, на мой взгляд, немного громоздок (и, вероятно, не так эффективен, как решение, указанное ниже).
Второй способ может быть реализован следующим образом (поместите код в .vimrc
или отправьте его другим способом):
function! NumberLines(format) range
let lfmt = (empty(a:format) ? 'N%04d' : a:format[0]) . ' %s'
for lnum in range(a:firstline, a:lastline)
call setline(lnum, printf(lfmt, lnum, getline(lnum)))
endfor
endfunction
command! -range=% -nargs=? NumberLines <line1>,<line2>call NumberLines([<f-args>])
NumberLines
функция перечисляет все строки файла в заданном диапазоне и добавляет каждой строке свой номер в соответствии с заданным форматом printf (по умолчанию 'N% 04d'). Чтобы упростить использование этой функции, я создаю здесь новую команду, которая принимает диапазон обрабатываемых строк (по умолчанию - весь файл) и необязательный аргумент - формат номера строки.