Copy+Paste(或 Cut+Paste)操作(在 Vim 中:yank 或 delete 和 put)由寄存器调节。寄存器可以保存按字符或按行的文本*(请参阅 参考资料:help characterwise
)。
- 如果您选择“按字符”(
y5l
、y2W
、y$
、v
<motion>y
等),则寄存器将以字符文本结束。
- 如果您选择“按行”(
y2j
、y}
、V
<motion>y
等),则寄存器将保存逐行文本。
当您放置寄存器的内容时,文本的放置取决于它是按字符还是按行。
- 当您输入按字符的文本时,它将立即插入到光标位置之后/之前。
- 当您放置逐行文本时,它将插入到光标所在行之后/之前。
文本是放在光标位置(它所在的行)之后还是之前,由您使用的 put 命令控制:
p
(小写)将文本放在光标之后(或在其行之后,如果寄存器当前是逐行的)
P
(大写)将文本放在光标之前(或在其行之前,如果寄存器当前是逐行的)
简而言之,您如何拉/删除以及如何放置两者都会影响最终结果。
根据您的描述,您似乎正在使用p
按字符放置文本(可能是通过v
或单击基于鼠标的选择)。
相反,您应该将P
(put before) 与逐行文本一起使用。如果您正在进行基于键盘的选择,请使用V
(大写)而不是v
(小写)。如果您正在进行基于鼠标的选择,请在开始选择时单击三次而不是单击一次。P
然后,在移动到第一行后,拉出或删除并使用来进行最后的“粘贴”。
*寄存器还可以保存逐块数据(例如,来自逐块Control-V可视模式);放置时,它将以块方式放置。