我需要使用此模式在vi
中创建一个文件。有没有办法使用第一行自动生成这些行
run 1 end
run 2 end
run 3 end
run 4 end
run 5 end
run 6 end
我总是可以在Excel中执行此操作,然后将其转换为文本文件,然后切换到vi
,但想知道是否有办法在vi
中执行此操作以便我不要必须切换回excel
答案 0 :(得分:10)
:help ctrl-a
^ a增加光标下的数字,您可以在宏中使用它。对于您的情况,假设您有第一行并且光标位于其上:
qaYpw^aq4@a
应该做的伎俩。这是帮助页面中概述的技术,使用w
修改以将光标向前移动到数字。打破它:
qa
开始在注册a
Y
猛拉当前行p
将yank缓冲区放在当前位置下方并移至新行的第1列w
向前移动一个单词(到数字)^a
增加数字q
停止录制宏<count>@a
应用宏&lt; count&gt;次
另一种技术是使用外部工具。例如,如果您已经拥有该行并且光标位于其上:
!!awk '1;{for(i=0;i<5;i++){$2+=1; print}}'
答案 1 :(得分:3)
:put!=map(range(1,6),'\"run \".v:val.\" end\"')
答案 2 :(得分:2)
威廉的回答非常好。我会发布另一个解决方案(它有点复杂),假设你已经有了第一行
Y6P
:let g:I=1
:%g/\d/s/\d/\=g:I/|let g:I=g:I+1
:help sub-replace-\=
)