ビジュアルブロックモードの使用:
y3j
<C-v>3j
I0<Esc>
'>
p
<C-v>3j
I1<Esc>
1
パディングから始めて、 :P
をスキップするために使用できます。'>
y3j
<C-v>3j
I1<Esc>
P
<C-v>3j
I0<Esc>
Exコマンドのみを使用する:
:,+3y<CR>
:,+3norm! I0<CR>
:put
:<Up> "use commandline history to save some typing
<Backspace>1<CR>
置換コマンドと通常モードコマンドを組み合わせて使用する場合:
y3j
:,+3s/^/0<CR>
p
:<Up>
<Backspace>1<CR>
これを頻繁に行う場合は、これをマクロに記録するのがおそらく最善の戦略です。その時点では、実際のパディングがどのように行われるかは実際には関係ありません。入力するのは入力だけで@x
あり、マクロはおそらく瞬時に実行されるからです。
録音中に何をするかは実際には重要ではありません。例を次に示します。
qx
y3j
:,+3s/^/0<CR>
p
:,+3s/^/1<CR>
q
あなたがこれを持っていると仮定します:
[0]0
01
10
11
ヒット@x
すると、上記が次のようになります。
000
001
010
011
100
101
110
111
マクロはレジスターx
に保存され、次のVimセッションで引き続き使用できます。
そして、誰かが素敵なワンライナーを思い付くことができると確信しています。
編集
上記のマクロのステップバイステップの説明:
qx
、レジスターでの記録を開始しますx
(使用可能な任意のレジスターにすることができます)。
y3j
、現在の行と次の3行をヤンクします。
:
、説明は必要ありません。
,+3
、これは私たちが取り組んでいる範囲です。この範囲を定義するためのより正しい方法は、でした.,+3
。範囲の開始線と終了線はコマで区切られています。
開始行は現在の行であり、入力を節約するために省略できます。そのため、コマが残り、その後に終了行が続き、現在の行から相対的に表され+3
ます。
s/^/0<CR>
、これは単純な置換です。
^
検索パターンのinは、「行の先頭」を意味します。最初の文字と一致しないため、このような行の前に何かを追加したい状況に最適です。
したがって、基本的には行の前に。を付け0
ます。それはあなたが望むものなら何でもかまいません。
範囲に対して置換を実行すると、範囲の各行で置換が実行されます。ここでは、4行あるため、各行の前に。が付き0
ます。
<CR>
、は、まあ…<Enter>
置換を実行するために使用されるキーです。
p
、前にヤンクした4行を現在の行の下に貼り付けます。
:,+3s/^/1<CR>
、以前と同じですが、1
。
q
、録音を終了します。
そして、あなたのコメントに答えるために、これはあなたがこれをどのように変えるかです:
00
01
10
11
その中に:
00 0.0
01 0.0
10 0.0
11 0.0
別の「アンカー」を使用する必要があります。^
は「行の先頭」、$
は「行の終わり」であるため、置換は次のようになります。
:,+3s/$/ 0.0