在Vim中粘贴一条猛拉的线后,为什么我不能再粘贴它?

时间:2014-08-12 14:34:33

标签: vim paste yank

这个问题之前可能已经回答了,但我尝试过搜索,无法在任何地方找到答案。

我对Vim有些新意,我遇到了以下问题。一旦我划线并粘贴它,我就不能再粘贴它了。例如,在Word环境中,您可以复制文本,粘贴它,然后您可以再次粘贴它。但是在Vim中,一旦我粘贴它然后再次尝试粘贴(p),它会粘贴我粘贴在那条线上的文本。

因此,例如,我将“这条线被猛拉”的线条拉到“我不想要这条线”上,因此“这条线被猛拉”发生在“我不想要这条线”上。 如果我再次点击进一步,我将不会粘贴“这条线被猛拉”,但会得到“我不想要这条线”。

有没有办法可以再次粘贴相同的拉线而不会再回来再次拉扯它?

2 个答案:

答案 0 :(得分:11)

这是因为vim的寄存器。当您将一条拉线粘贴到另一条线上时,您刚删除的线(通过粘贴它)占据默认寄存器(存储拉线)中的拉线位置。这是为了简化切换线。 Yank one,粘贴另一个,然后再回去粘贴。但是,为了保留您的抽奖行,您可以指定一个注册表,因此您可以使用y而不是"ay,这会将您的行放入注册a。现在要粘贴,您可以使用"ap,这将粘贴寄存器a的内容,这些内容不会被覆盖。

作为奖励"+y"*y"+p"*p粘贴系统剪贴板(其他应用程序的复制粘贴),如果它在vim中启用(它是在大多数系统上。)

编辑:正如评论中所提到的,当您使用yank命令时,被拉动的文本不仅会进入默认寄存器,还会进入0寄存器(粘贴其他内容时不会被覆盖)。这意味着您通常可以使用y进行抓取,然后将其粘贴到"0p,并且不会被粘贴的任何内容覆盖。

答案 1 :(得分:3)

来自我的.vimrc:

"Paste in visual mode without copying
xnoremap p pgvy

说明:

xnoremap - 仅在可视模式下重新映射

p - 粘贴

gv - 重新选择最后一个选择(不是您当前所选的那个,而是原始选择)

y - 复制它(最后选择)

在此映射中,您可以一遍又一遍地粘贴视觉上选定的行。