2

我试图像这样粘贴在 Vim 中:

    a_1 "Day"
    a_2 "Week"
    a_neg_1 "Refused"
    a_neg_2 "Don’t know"

我复制最后两行并将它们超过前两行。像这样:

    a_neg_1 "Refused"
    a_neg_2 "Don’t know"
    a_1 "Day"
    a_2 "Week"

似乎每次我做多行拉动时,它总是想内联粘贴它。像这样:

    aa_neg_1 "Refused"
    a_neg_2 "Don’t know"_1 "Day"
    a_2 "Week"
4

4 回答 4

3

Copy+Paste(或 Cut+Paste)操作(在 Vim 中:yank 或 delete 和 put)由寄存器调节。寄存器可以保存按字符或按行的文本*(请参阅 参考资料:help characterwise)。

  • 如果您选择“按字符”(y5ly2Wy$v<motion>y等),则寄存器将以字符文本结束。
  • 如果您选择“按行”(y2jy}V<motion>y等),则寄存器将保存逐行文本。

当您放置寄存器的内容时​​,文本的放置取决于它是按字符还是按行。

  • 当您输入按字符的文本时,它将立即插入到光标位置之后/之前
  • 当您放置逐行文本时,它将插入到光标所在行之后/之前

文本是放在光标位置(它所在的行)之后还是之前,由您使用的 put 命令控制:

  • p(小写)将文本放在光标之后(或在其行之后,如果寄存器当前是逐行的)
  • P(大写)将文本放在光标之前(或在其行之前,如果寄存器当前是逐行的)

简而言之,您如何拉/删除以及如何放置两者都会影响最终结果。


根据您的描述,您似乎正在使用p按字符放置文本(可能是通过v或单击基于鼠标的选择)。

相反,您应该将P(put before) 与逐行文本一起使用。如果您正在进行基于键盘的选择,请使用V(大写)而不是v(小写)。如果您正在进行基于鼠标的选择,请在开始选择时单击三次而不是单击一次。P然后,在移动到第一行后,拉出或删除并使用来进行最后的“粘贴”。


*寄存器还可以保存逐块数据(例如,来自逐块Control-V可视模式);放置时,它将以块方式放置。

于 2012-06-12T05:07:04.747 回答
2

小写p粘贴在光标后。

大写P粘贴在光标之前。

于 2012-06-11T21:08:24.133 回答
1

简单地put在 ex 模式下使用:

:put
于 2012-06-12T13:36:18.183 回答
1

在可视模式下,y抽出字符集和Y抽出行集。

当您拉出字符时,以下 put 是字符敏感的,这会导致您的问题。而是用拉动整行Y,你应该得到你想要的行为。

于 2012-06-11T21:59:18.813 回答