用剪贴板内容替换多行的最佳方法是什么?
我遇到的问题是,当我猛拉一条线并将其粘贴到另一条线上时,“yank”将替换为我刚刚替换的线。现在,如果我想用同一条线替换另一条线,我必须重新开始并再次拉出它。
必须有更好的方法来做到这一点。
答案 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命令轻松重复。
yiw
Yank内心词(光标下的复制词,说&#34;第一&#34;)。ciw<C-r>0
更改&#34;秒&#34;,将其替换为&#34; first&#34; (是Ctrl-R)。.
更改&#34;第三个&#34;,将其替换为&#34;首先&#34;。