Vim 用“p”粘贴拉伸的块与下面的线条混合

Vim 用“p”粘贴拉伸的块与下面的线条混合,vim,copy,paste,Vim,Copy,Paste,如果我用Ctrl+V、Shift+$复制3行,然后转到另一个窗口并用p粘贴,这些行会混合 我如何才能将拉伸的块粘贴为新行,以便旧行移到下方,而不是与粘贴的行混合?在正常模式下按Ctrl-V时,将切换到V-block模式,在该模式下,文本将按块复制(位置相对固定) @PeterRincker在评论部分给出了一个非常简单的方法,您可以通过以下方式将被拉下的块按行放置: :put :[line]pu[t][x]将文本[来自寄存器x]放在[line]之后(默认当前行)。 这始终有效|按线|,因此此命令

如果我用Ctrl+V、Shift+$复制3行,然后转到另一个窗口并用p粘贴,这些行会混合


我如何才能将拉伸的块粘贴为新行,以便旧行移到下方,而不是与粘贴的行混合?

在正常模式下按Ctrl-V时,将切换到V-block模式,在该模式下,文本将按块复制(位置相对固定)

@PeterRincker在评论部分给出了一个非常简单的方法,您可以通过以下方式将被拉下的块按行放置:

:put
:[line]pu[t][x]
将文本[来自寄存器x]放在[line]之后(默认当前行)。
这始终有效|按线|,因此此命令可用于将拉伸的块放置为新线


下面是我最初的答案,需要更多的步骤

一种不太整洁但又实用的按行粘贴方式:

  • :新建
    以创建新缓冲区
  • p
    粘贴
  • Shift+V+G
    选择所有文本
  • y
    复制

现在你得到了复制文本的正常形式。

谢谢,我还发现
Ctrl+v
可以按我想要的行数向下移动,然后
Ctrl+yy
Ctrl+Y
,然后
p
按预期工作。

有三种不同的视觉模式;通过使用
,您已经使用了块视觉模式;cp.
:帮助分块可视化
。这样的洋基被存储为一个“浮动”文本块,插入到现有的周围字符中(正如您所发现的)。如果要复制并粘贴完整的行,最简单的方法是在行模式下拖动(即使用
V
而不是
,或者完全跳过视觉模式,使用较短的
[N]yy

如果希望选择部分行,但粘贴为完整的单独行,则该选项不起作用。为此,需要更改寄存器内容的模式。我经常需要将寄存器内容“强制转换”到某种(characterwise/linewise/blockwise)模式,为此我编写了相应的代码。它提供了
gcp
glp
等替代内置粘贴命令的选项,这些命令强制使用特定模式(目前,该主题还有其他一些变体,如使用逗号或查询字符进行粘贴)


有了它,您只需使用
glp
/
glp
在当前行之后/之前粘贴,而不管您如何拖动文本。

v>shift$>2j>y,然后在目标窗口中使用p粘贴我不明白。默认情况下,
Ctrl-Y
只需向上滚动窗口。如何使用它来复制文本?您可以通过
:put
强制按行粘贴,而无需执行任何中间步骤。