Vim 用“p”粘贴拉伸的块与下面的线条混合
如果我用Ctrl+V、Shift+$复制3行,然后转到另一个窗口并用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时,将切换到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
强制按行粘贴,而无需执行任何中间步骤。