粘贴多次
用剪贴板的内容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
来更改内部单词。 这种方法的优点是易于重复使用.
重复命令。
-
yiw
Yank内部单词(在光标下复制单词,说“第一个”)。 - …将光标移到另一个单词(如“秒”)。
-
ciw<Cr>0
更改“秒”,将其replace为“第一个”(即Ctrl-R)。 - …将光标移动到另一个单词(如“第三个”)。
-
.
更换“第三”,用“第一”代替。