с вашим решением, которое не использует сценарий, а записывает и повторяет нажатия клавиш?
Для данного примера:
blah-blah <blah-variable-x-06> <blah-variable-z-06-blah>
Мы начнемначав запись и поместив ее в регистр j (это мое решение; выберите то, что вы предпочитаете).Затем мы скопируем строку и вставим ее ниже.Затем запустите регулярное выражение, чтобы увеличить ваши переменные, и затем завершите записанный скрипт.
qj
yy
p
:s/variable-[a-zA-Z]-\zs[0-9]*\ze/\=(submatch(0) + 1)/g
q
Оттуда вы можете переместить курсор на строку, над которой вы хотите выполнить операцию, и запустить скрипт столько разпо вашему желанию: <n>@j
такое, что <n>
- это количество строк, которые вы хотите создать.Вам придется изменить регулярное выражение, чтобы оно соответствовало фактической структуре ваших строк, а не приведенным примерам.
Предостережение: это не идеально.Ваши числа, такие как 07
, станут 7
, так что вам еще предстоит проделать некоторую работу по очистке, но, по крайней мере, число вхождений таких значений будет ограничено довольно низким.
в качестве альтернативы, если ваши строки будут довольно похожим образом выстроены так, что у вас всегда будет две из этих переменных, вы можете искать эти переменные и увеличивать их.Вы должны будете запретить восьмеричное, чтобы оно не увеличивалось с 07
до 10
.Кроме того, поскольку вы используете дефис перед своими числами, нам на самом деле придется уменьшить его, поскольку он видит их как отрицательные числа.
qk
:let b:nrformats=&nrformats
:set nrformats=bin
yy
p
/variable-[a-zA-Z]-\zs[0-9]*\ze
<c-x>
n
<c-x>
:let &nrformats=b:nrformats
q
Опять же, вам придется исправить поиск, чтобы он соответствовал вашемуфактическое использование.