コピー+貼り付け(またはカット+貼り付け)操作(Vimの用語では:ヤンクまたは削除して配置)はレジスターによって仲介されます。レジスターは、文字単位または行単位のテキスト*を保持できます(を参照:help characterwise
)。
- 「文字ごと」(、、、 <モーション>など)を選択する
y5l
と、レジスタy2W
は文字単位のテキストになります。y$
v
y
- 「行ごと」(、、 <モーション>など)を選択する
y2j
と、y}
レジスタは行ごとのテキストを保持します。V
y
レジスターの内容を配置する場合、テキストの配置は、文字単位か行単位かによって異なります。
- 文字単位のテキストを配置すると、カーソル位置の直後/直前に挿入されます。
- 行ごとのテキストを配置すると、カーソルが置かれている行の前後に挿入されます。
テキストがカーソルの位置(カーソルが置かれている行)の後ろに配置されるか前に配置されるかは、使用するputコマンドによって制御されます。
p
(小文字)テキストをカーソルの後ろに置きます(または、レジスタが現在行単位の場合はその行の後に)
P
(大文字)テキストをカーソルの前(または、レジスタが現在行単位の場合はその行の前)に配置します。
つまり、ヤンク/削除の方法と両方の配置方法が最終結果に影響します。
説明に基づくと、p
文字単位のテキストを配置するために使用しているようです(おそらくv
、またはシングルクリックのマウスベースの選択を介して)。
代わりに、P
行ごとのテキストで(前に置く)を使用する必要があります。キーボードベースの選択を行う場合は、 (小文字V
)の代わりに(大文字)を使用してv
ください。マウスベースの選択を行う場合は、選択を開始するときにシングルクリックではなくトリプルクリックを実行します。P
次に、最初の行に移動したら、ヤンクまたは削除して、最後の「貼り付け」を実行します。
*レジスタは、ブロック単位のデータを保持することもできます(たとえば、Control-Vブロック単位のビジュアルモードから)。置くと、ブロックごとに配置されます。