Я полагаю, что вы можете достичь того, что вы хотите, установив счетчик (здесь: переменная g:I
) в 1:
let g:I=1
И затем выполнить подстановку в каждой строке, которая соответствует ^- id: \d\+$
:
%g/^- id: \d\+$/ s/\d\+/\=g:I/|let g:I=g:I+1
Подстановка использует вещь \=
(см. :help sub-replace-expression
) для подстановки \d\+
с фактическим значением g:I
. После подстановки счетчик увеличивается (let g:I=g:I+1
).
С помощью g/^- id: \d\+$/
вы гарантируете, что подстановка будет выполняться только для строк, соответствующих ^- id: \d\+
.
Редактировать Если вы хотите иметь карту для нее, вы можете поместить следующий фрагмент в ваш .vimrc :
nnoremap resync :let g:I=1<CR>:%g/^- id: \d\+$/ s/\d\+/\=g:I/\|let g:I=g:I+1<CR>
, что позволяет повторно синхронизировать ваши идентификаторы, набрав resync
в нормальном режиме .
Обратите внимание на экранирование |
с \
и использование <CR>
там, где вы нажимаете ввод.