回答:
:put
およびを使用しrange()
ます。
:put =range(1,100)
上部の空白行(romainlに対するkudos)を回避するには、次を使用します:0put
。
:0put =range(1,100)
Undoのpure-vim :put =range(1,100)
(実際には上に空白行が表示される)に加えて、OSに応じてそのコマンドの1つを使用できます。たとえば、Unix / Linuxボックスの場合:
%!seq 1 100
上記は、(空の)バッファー全体をにパイプすることseq
で機能します。入力を無視し、1から100までの数字を出力します。Vimはバッファー全体をseq
の出力に置き換えます。
これは、必要なものを取得するためのコマンドラインの方法に既に慣れている場合に便利です。
記録のために、そして間違いなく最短の方法ではありませんが(@Undoのすばらしい解決策を参照)、キーストロークのシーケンスもそれを行います:
i1EscqaYpCtrl+aq98@a
それをあなたのために分解させてください:
i1<Esc>
-番号1を挿入し、コマンドモードに戻りますqa
-レジスタ "a"でマクロの記録を開始しますY
-現在の行をコピーするp
-現在の行を貼り付けます(カーソルも貼り付けられた行に移動します)<Ctrl>a
-行の次の番号を増やして2にするq
-マクロの記録を停止します(レジスタ "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)
。