粘贴多次

时间:2011-08-23 15:58:59

标签: vim copy paste

用剪贴板内容替换多行的最佳方法是什么?

我遇到的问题是,当我猛拉一条线并将其粘贴到另一条线上时,“yank”将替换为我刚刚替换的线。现在,如果我想用同一条线替换另一条线,我必须重新开始并再次拉出它。

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

6 个答案:

答案 0 :(得分:93)

我的.vimrc中有这个:

xnoremap p pgvy

(注意:这只适用于默认寄存器,但这种映射很容易记住)。可以编写更精细的版本。此外,您仍然可以使用P来获取旧行为。

答案 1 :(得分:23)

"0应该包含你的内容。输入有点繁琐,但"0p应该做你想做的事。

或者,不要在前面选择并替换旧行。如果您通过搜索找到这些行,只需反复点击n.(在初始p之后),然后当它们全部粘贴时,请ndd后跟n. . 1}} s必要。

移动到Vim时我需要做的最大的心理转换是弄清楚如何顺序应用组编辑。即而不是在一行上做一堆编辑,然后在另一行上做一堆相同的编辑,我将在一堆行上进行第一次编辑(使用{{1}}效果很好),然后是第二行另外,使用宏可能会有所帮助,因为它们非常棒,但有时候通过“复杂”的更改来正常工作会更加乏味。

答案 2 :(得分:12)

我经常使用其他注册表,将您需要的行复制到某个命名注册表"ay,然后从那里粘贴"ap

答案 3 :(得分:11)

当您粘贴Vim中的选区时,它将使用所选内容替换默认寄存器。如果粘贴选择是擦除剪贴板寄存器的内容,那么很可能你的.vimrc中有以下行

set clipboard=unnamed

一个选项是删除它并使用显式剪贴板寄存器"+

另一种选择是使用任何其他明确命名的寄存器(a-z)。在第一次粘贴后,将线条重新拉回"c,然后使用"cp从那里开始粘贴。

答案 4 :(得分:8)

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

答案 5 :(得分:4)

使用文本对象命令(例如ciw)来改变内部单词通常更好,而不是使用复制/粘贴。此方法的优点是可以使用. repeat命令轻松重复。

  1. yiw Yank内心词(光标下的复制词,说"第一")。
  2. ...将光标移动到另一个单词(说"秒")。
  3. ciw<C-r>0更改&#34;秒&#34;,将其替换为&#34; first&#34; (是Ctrl-R)。
  4. ...将光标移动到另一个单词(例如&#34;第三个&#34;)。
  5. .更改&#34;第三个&#34;,将其替换为&#34;首先&#34;。