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可视模式);放置时,它将以块方式放置。