1
2
3
4
5
6
7
8
9
10
…
100
的文件。为了清楚起见,我不希望这些数字显示在页边距中。我希望它们插入文档本身。
#1 楼
使用:put
和range()
::put =range(1,100)
为了避免顶部出现空白行(对romainl表示敬意),请使用
:0put
::0put =range(1,100)
#2 楼
除了Undo的纯vim:put =range(1,100)
(实际上在顶部留下空白行)之外,您还可以根据其操作系统使用其命令之一。例如,在Unix / Linux机器上:%!seq 1 100
上面的方法是将整个(空)缓冲区传递给
seq
,该缓冲区忽略其输入,仅输出数字1到100。然后Vim用seq
的输出替换整个缓冲区。,当您已经熟悉一些命令行方式来获取所需内容时,这很有用。
评论
这“掩盖”了一个问题,那就是为什么我认为它比公认的更好。是的,您可以使vim发挥作用,就像您可以使用新月形扳手搅拌汤一样。 Vim是一个文本编辑器,而不是一个任意的文本生成器。有很多明显的工具可以做到这一点。
– msw
16-10-23在3:11
#3 楼
作为记录,而且绝对不是最短的方法(请参阅@Undo的出色解决方案),但是按一下击键顺序也可以做到:
i1EscqaYpCtrl + aq98 @ a
让我为您分解一下:
i1<Esc>
-插入数字1,然后返回命令模式qa
-开始在寄存器“ a”中记录宏Y
-复制当前行p
-粘贴当前行(光标也将移至粘贴的行)<Ctrl>a
-将行中的下一个数字递增,使其变为2 q
-停止记录宏(已为寄存器“ a”)98@a
-将寄存器“ a”中的宏重播98次#4 楼
这是另一种方法,需要较新的Vim(类似7.4.800)。假定缓冲区为空,寄存器a中为“ 1”。 ,“ a100P。
,然后从视觉上选择第2行到100:2EnterVG。
现在按gCtrl + A。 br />
评论
您必须在答案中添加let @ a =“ 1”。初学者可能会苦于寻找如何在寄存器a中存储值1。
– SibiCoder
16年5月28日在8:52
我在其他类似的解决方案中也看到过gCtrl + A组合键。但是我一直无法找到关于它在做什么/如何工作的解释?您在文档中是否有解释g的参考?谢谢!如果我找到解释,我将其发布。
–codingFoo
16-09-16在17:58
文档位于:h g_CTRL-A
–克里斯蒂安·布拉班特(Christian Brabandt)
16年9月16日在20:03
我错过了指向v_g_CTRL-A部分的链接。
–codingFoo
16年9月16日在20:13
#5 楼
我知道这个问题确实很老,但是还有另一种方法可以解决。试试这个:99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
只会打开100个空行。然后,我们运行一个替代命令::% " On every line
s/ " substitute
^/ " the start of the line. (This will always match no matter what)
\= " Evaluate:
line('.') " The current line.
评论
谢谢。您的回答帮助我找到了:vim.fandom.com/wiki/Using_an_expression_in_substitute_command,其中提供了更多详细信息。 +1
– PSkocik
20/12/16在11:45
评论
或在插入模式下,
–霍奇克
18年11月14日在18:54