粘贴多次

用剪贴板的内容replace多行最好的方法是什么?

我遇到的问题是当我拔出一条线并将其粘贴到另一条线上时,“YANK”被replace为我刚replace的线。 现在,如果我想用同一条线replace另一条线,我必须重新加载并再次抽出。

有一个更好的方法来做到这一点。

我有这个在我的.vimrc中:

xnoremap p pgvy 

(注意:这只适用于默认寄存器,但这个映射很容易记住)。 写一个更精细的版本将是可能的。 而且,你仍然可以使用P来获得旧的行为。

"0应该有你的抽筋的内容,键入更"0p ,但"0p应该做你想要的。

或者,不要select并更换旧的线路。 如果你find这些search行,只需点击n. 一遍又一遍地(在一个初始的p ),然后当他们全部被粘贴的时候, ndd跟着那么多的n. 如有必要。

移动到Vim时,我所需要做的最大的心智转换就是要弄清楚如何按顺序应用组编辑。 也就是说,不是在一行上做一堆编辑,然后在另一行上做一堆相同的编辑,我会在一堆行上进行第一次编辑(使用.效果很好),然后再编辑一个一堆线,等等。或者,macros的使用可能会有所帮助,因为它们是非常棒的,但有时更复杂一些,以正确地处理“复杂”的变化。

我经常使用另一个registry,将你需要的行复制到某个命名registry"ay ,然后从那里粘贴"ap

当你在Vim中粘贴select时,它将用select的内容replace默认的寄存器。 如果粘贴一个select是擦除剪贴板寄存器的内容,那么很有可能在你的.vimrc文件中有以下行

 set clipboard=unnamed 

一个select是删除,并使用显式剪贴板注册"+

另一种select是使用任何其他明确命名的寄存器(az)。 在第一次粘贴之后,将该行复制回"c ,然后使用"cp从那里粘贴出来。

使用np ,其中n是你想要粘贴的行数,例如3p将粘贴3行。

而不是使用复制/粘贴,通常最好使用文本对象命令(如ciw来更改内部单词。 这种方法的优点是易于重复使用. 重复命令。

  1. yiw Yank内部单词(在光标下复制单词,说“第一个”)。
  2. …将光标移到另一个单词(如“秒”)。
  3. ciw<Cr>0更改“秒”,将其replace为“第一个”(即Ctrl-R)。
  4. …将光标移动到另一个单词(如“第三个”)。
  5. . 更换“第三”,用“第一”代替。