有时我需要在文件中插入一些类似的行,这些行仅在序列号上有所不同。例如,
print "func 1";
print "func 2";
print "func 3";
print "func 4";
print "func 5";
使用 vim ,我最后使用[yypppp]复制粘贴第一行,然后更改最后四行。如果你要插入更多的行,这真的很慢。
在vim中有更快的方法吗?
这方面的一个例子是:
初始状态
boot();
format();
parse();
compare();
results();
clean();
最终状态
print "func 1";
format();
print "func 2";
parse();
print "func 3";
compare();
print "func 4";
results();
print "func 5";
clean();
答案 0 :(得分:12)
录制宏。以下是您的特定示例的工作流程:
复制粘贴第一行。然后,
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
您可以使用任意数字替换3以继续生成具有递增数字的新print
行。
对于您的第二个示例,您只需添加
即可j : Moves one line down
在yy
命令后,获取交替的命令行和print
的命令。
答案 1 :(得分:1)
你有插件可以做到这一点。例如,visincr。以可视方式选择您的数字列,然后运行:I
。
另一种方法是录制宏。运行qx
开始录制宏以注册 x ,yiw
在光标下面移动字词,j
向下移动一行,viwp
到粘贴它, CTRL A 增加新数字,q
停止录制,然后@x
重播注册 x的内容
答案 2 :(得分:0)
对于这种特殊情况,您可以使用宏。有关如何在this post中执行序列号的详细说明。
您需要更改帖子中的示例以首先写出整行,然后记录复制该行并更新计数器的宏。