энергия: изменение значения переменной линию за линией

Позволяет говорят, что я ввел следующее

a + 1 =b and a+1=c

Мне нужны еще 2 выражения как этот, но я хочу увеличить значение 1 - 3, таким образом, я копирую, вставил выражение выше еще 2 раз и вручную увеличился 1 поэтому теперь, мой файл похож так

a + 1 =b and a+1=c
a + 2 =b and a+2=c
a + 3 =b and a+3=c

Существует ли способ автоматизировать это? Отчасти как поиск и замена, кроме я должен искать выражение не символ, потому что 1 записан другие выражения, которые я не хочу изменять. и я хочу изменить значение 1 на строку. Каждое выражение находится на новой строке.

3
задан 2 July 2015 в 03:57

3 ответа

Помимо использования макроса Вы могли также использовать, находят и заменяют

yy2p
:%s/\v\d+/\=line('.')/g
  • yy2p рывки строка и мимо него два раза
  • :%s пироги поиск и заменяют
  • \v\d+, поиски всех цифровых символов
  • \=line('.') оценивают функцию строки как замену для всех соответствий

, еще одна опция

:pu! =map(range(1,3), 'printf(''a + %d =b and a+%d=c'', v:val, v:val)')

трудно для запоминания, но Вы не должны дергать, поиск или макрос ничто. Начиная с пустого буфера, Вы получаете всю энчиладу в одной команде.

3
ответ дан 1 December 2019 в 13:12

Vim имеет способ увеличить число автоматически: <c-a> (или Ctrl ) в нормальном режиме.

Так, с помощью макроса, довольно легко создать увеличивающуюся последовательность чисел в Vim. Запустите в строке, содержащей a+ 1 =b and a+1=c и:

qq
Yp^Aw^A
q

Эти ^A выдерживает за нажатие Ctrl . Тогда используйте @q для повторения макроса. Так 4@q произвел бы:

a + 1 =b and a+1=c
a + 2 =b and a+2=c
a + 3 =b and a+3=c
a + 4 =b and a+4=c
a + 5 =b and a+5=c
  • qq запускает макрос ( q ) сохраняющий в регистре q.
  • Y рывки текущая строка (linewise)
  • p вставки и Вы заканчиваете в начале следующего (раньше текущий) строка.
  • <c-a> Вы увеличиваете первое число в строке (и курсор перемещается в него)
  • , таким образом, Вы перемещаетесь в следующее слово и увеличиваете снова (w<c-a>), на этот раз влияя на второе число.
4
ответ дан 1 December 2019 в 13:12

Много дистрибутивов энергии шли со встроенной поддержкой Perl.

, Если это - Ваш случай, Вы можете:

:perldo s/a\+1=b and a\+1=c/sprintf('a+%d=b and a+%d=c',++$aux,$aux)/e

(я, вероятно, изменил пробелы в примере...)

2
ответ дан 1 December 2019 в 13:12

Другие вопросы по тегам:

Похожие вопросы: