在光标下方粘贴多线条

时间:2012-06-11 20:23:29

标签: vim keyboard-shortcuts copy-paste

我正试图像这样粘贴在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 个答案:

答案 0 :(得分:3)

复制+粘贴(或剪切+粘贴)操作(以Vim术语:yank或delete和put)由寄存器调解。寄存器可以包含字符或行文字 * (参见:help characterwise)。

  • 如果您选择“按字符”(y5ly2Wy$v< motion> y等,则注册将以字符明智文字结束。
  • 如果您选择“按行”(y2jy}V< motion> y等等,则注册将保留行-wise text。

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

  • 当您输入字符文字时,会立即在光标位置之后/之前插入
  • 当你输入行式文字时,它会在光标所在行之前/之后插入

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

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

简而言之,您如何挑选/删除如何将 影响最终结果。


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

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


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

答案 1 :(得分:2)

小写 p 在光标后粘贴。

大写 P 在光标前粘贴。

答案 2 :(得分:1)

在视觉模式中, y 抽出几组字符, Y 抽出几组线条。

当您抽出字符时,以下放置是字符敏感的,这会导致您的问题。用 Y 代替整条线,你应该得到你想要的行为。

答案 3 :(得分:1)

在ex模式下使用put

:put