INSERT INTO apps_forms (app_id, form_id) VALUES
(1, 1),
我要删除的是
(1, 1),
行,并将其粘贴137次。但是,我希望括号中的第二个数字每次都增加。输出看起来像:INSERT INTO apps_forms (app_id, form_id) VALUES
(1, 1),
(1, 2),
(1, 3),
...
(1, 137),
在Vim中是否可以做到这一点? >谢谢!
#1 楼
将光标放在(1, 1),
行上,然后键入:qaVypt)<C-a>q135@a
说明:
qa
开始在寄存器a(您可以选择另一个字母)。 Vyp
通过选择整行(V),复制它(y),然后将其粘贴到(p)下,来复制当前行。 t)
将光标移动到下一个右括号之前,使其位于第二个数字上。 <C-a>
(Ctrl和a)增加数字。 q
结束宏的录制。 135@a
将存储在寄存器中的宏重放135次。编辑:Peter Rincker的命令更短:
不同之处在于:
它使用寄存器q来存储宏(因为它是同一个键,所以比
qq
更快地键入qa
),它只复制一个击键
Y
(而不是两个Vy
),,它只用一个击键
W
(而不是t)
)将光标移动到第二个数字。#2 楼
最近的Vims已经了解了有关增加可视选定区域以及创建序列的知识。因此,您可以在粘贴行137次之后执行此操作:1)视觉上从第3行开始对第二个1进行块选择(Ctrl-V)。
2)按gCtrl-A
我已经在此处录制了一个屏幕
免责声明:这需要Vim 7.4.900左右。
评论
在Debian / sid上的Vim 7.4.826中成功测试。
–杜布
2015年11月17日13:38
您的截屏视频已消失,但是这种方法真棒!谢谢。
– david_nash
19年5月10日下午4:06
#3 楼
易于理解/易于记忆/易于适应其他情况的方式:使用VisIncr插件(如果您希望使用与本世纪的软件包管理器实际兼容的版本,而不是使用q4312079 s,您可以从GitHub获取)。使用它:转到
vimball
行并拉动:(1, 1),
将其粘贴136次:
Vy
的第二列并垂直标记:136p
运行增量:
1
阅读手册以了解其他优点:
C-vGf)h
。 />#4 楼
我会玩g^a
。尝试
137i0^v137kg^a
。评论
欢迎来到Vi和Vim!我已使用markdown格式化了您的答案。如果您编辑以解释如何回答OP的问题,那就更好了。
– D. Ben Knoble♦
19/12/8在13:51
评论
Vim高尔夫:qqyypW
– Peter Rincker
2015年11月11日下午0:16