Answers:
除了Undo的pure-vim :put =range(1,100)
(实际上在顶部留下空白行)之外,您还可以根据其操作系统使用其命令之一。例如,在Unix / Linux机器上:
%!seq 1 100
上面的工作通过将整个(空)缓冲区传递给seq
,从而忽略了它的输入,仅输出数字1到100。然后Vim用seq
的输出替换整个缓冲区。
当您已经熟悉一些命令行方式来获取所需的内容时,这很有用。
作为记录,这绝对不是最短的方法(请参阅@Undo的出色解决方案),但是按击键序列也可以做到这一点:
i1EscqaYpCtrl+aq98@a
让我为您分解一下:
i1<Esc>
-插入数字1,然后返回命令模式qa
-开始在寄存器“ a”中记录宏Y
-复制当前行p
-粘贴当前行(光标也将移至粘贴的行)<Ctrl>a
-增加行中的下一个数字,使其为2q
-停止记录宏(是寄存器“ a”)98@a
-重播寄存器“ a”中的宏98次这是另一种方法,需要较新的Vim(例如7.4.800)
假定缓冲区为空且寄存器a中的值为“ 1”。首先在缓冲区中输入100 1 "a100P。
然后从视觉上选择2至100行:2EnterVG。
现在按gCtrl+ A。
阅读以下位置的帮助 :h v_g_CTRL-A
:h g_CTRL-A
我知道这个问题确实很老,但是还有另一种方法可以解决。尝试这个:
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.
<C-r>=range(1,100)
。