Sometimes I need to insert some similar lines in a file which differ only in a sequence number. For example,
print "func 1";
print "func 2";
print "func 3";
print "func 4";
print "func 5";
Using vim, I end up copy pasting the first line using [yypppp] and then changing the last four lines. This is really slow if you have more lines to insert.
Is there a faster way to do this in vim?
An example of this is:
Initial state
boot();
format();
parse();
compare();
results();
clean();
Final state
print "func 1";
format();
print "func 2";
parse();
print "func 3";
compare();
print "func 4";
results();
print "func 5";
clean();
Record a macro. Here is the workflow for your particular example:
Copy-paste the first line. Then,
qa : Start recording macro to register a
yy : Yank current line
p : Paste current line in line below
/\d : Search for start of number (you can skip this command, the next command automagically moves the cursor to the number)
C-A : Control-A increments the number
q : Stop recording macro
3@a : Replay macro 3 times
You can replace 3 with any number to keep generating new print
lines with incremented numbers.
For your second example, you can just add
j : Moves one line down
after the yy
command, to get alternating lines of commands and print
's.