vim 多次粘贴

5uzkadbs  于 2023-08-05  发布在  其他
关注(0)|答案(7)|浏览(130)

用剪贴板的内容替换多行的最佳方法是什么?
我遇到的问题是,当我把一行拉出来并粘贴到另一行上时,“拉出来”被替换为我刚才替换的行。现在,如果我想用同一条线替换另一条线我必须回去再拉一次。
一定有更好的办法。

tvz2xvvm

tvz2xvvm1#

我在我的.vimrc中有这个:

xnoremap p pgvy

字符串
(note:这将只对默认寄存器起作用,但这种Map很容易记住)。写一个更详细的版本是可能的。此外,您仍然可以使用P来获得旧的行为。

jyztefdp

jyztefdp2#

"0应该有你美国佬的内容。它的类型有点繁琐,但"0p应该可以按照您的要求来做。
或者,不要选择并替换前面的旧线路。如果您通过搜索找到了这些行,只需反复点击n.(在初始p之后),然后当它们全部粘贴后,按需要执行ndd,然后再按需要执行n.
在转到Vim时,我需要做的最大的心理转换是弄清楚如何按顺序应用组编辑。也就是说,我不会在一行上做一堆编辑,然后在另一行上做一堆相同的编辑,我会在一堆行上做第一个编辑(使用.,效果很好),然后在一堆行上做第二个编辑,等等。或者,使用宏可能会有所帮助,因为它们非常棒,但有时候要正确处理“复杂”的更改会有点乏味。

xu3bshqb

xu3bshqb3#

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

bweufnob

bweufnob4#

当你在Vim中粘贴一个选区时,它会用选区的内容替换默认寄存器。如果粘贴在一个选区上会擦除剪贴板寄存器的内容,那么很可能你的.vimrc中有下面这行

set clipboard=unnamed

字符串
一种选择是删除它并使用显式剪贴板寄存器"+
另一个选项是使用任何其他显式命名的寄存器(a-z)。第一次粘贴后,将线拉回到"c,然后使用"cp从那里粘贴出来。

sg2wtvxw

sg2wtvxw5#

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

  1. yiw提取内部单词(复制光标下的单词,说“第一个”)。
    1....将光标移动到另一个单词(例如“second”)。
  2. ciw<C-r>0更改“second”,将其替换为“first”(为Ctrl-R)。
    1....将光标移动到另一个单词(说“第三个”)。
  3. .更改“第三”,将其替换为“第一”。
nxowjjhe

nxowjjhe6#

使用np其中n是多少时间你想粘贴的线条例如3p将粘贴3行.

a2mppw5e

a2mppw5e7#

添加下面的键Map,按Ctrlp粘贴。

" Paste Register 0  
map <C-p> "0p

字符串

相关问题