VIM: совпадать с номером после PATTERN, заменить на число + 1 - PullRequest
1 голос
/ 26 февраля 2020

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

 $AERDIR/aergen.sh -n control -s 2100 -e 2120 -m 3 -a -x -z 144 -p  -g
 $AERDIR/aergen.sh -n Cl26E10 -s 2100 -e 2120 -m 3 -a -x -c 2.6E-10 -z 145 -p  -g
 $AERDIR/aergen.sh -n Br26E12 -s 2100 -e 2120 -m 3 -a -x -b 2.6E-12 -z 146 -p  -g
 $AERDIR/aergen.sh -n I26E13  -s 2100 -e 2120 -m 3 -a -x -i 2.6E-13 -z 147 -p  -g

Я бы хотел сопоставить три числа di git после -z и заменить его на это число +1, поэтому

 $AERDIR/aergen.sh -n control -s 2100 -e 2120 -m 3 -a -x -z 145 -p  -g
 $AERDIR/aergen.sh -n Cl26E10 -s 2100 -e 2120 -m 3 -a -x -c 2.6E-10 -z 146 -p  -g
 $AERDIR/aergen.sh -n Br26E12 -s 2100 -e 2120 -m 3 -a -x -b 2.6E-12 -z 147 -p  -g
 $AERDIR/aergen.sh -n I26E13  -s 2100 -e 2120 -m 3 -a -x -i 2.6E-13 -z 148 -p  -g

Я играл с параметрами подстать и тому подобное, но мне удалось только увеличить первое появление чисел в каждой строке. Как бы я сформулировал команду для этого, скажем, из строки 203, $?

1 Ответ

4 голосов
/ 26 февраля 2020

Это задание для submatch:

%s/-z \zs\d\+/\=submatch(0)+1/

Шаблон -z \zs\d\+ соответствует одной или нескольким цифрам \d\+, перед которыми стоит -z. Затем \=submatch(0)+1 добавляет единицу к соответствующему номеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...