用剪贴板的内容替换多行的最佳方法是什么?
我遇到的问题是,当我拉动一行并将其粘贴到另一行上时,“拉动”会被我刚刚替换的行替换。现在,如果我想用同一行替换另一行,我必须返回并再次拉动它。
必须有更好的方法来做到这一点。
我的
.vimrc
里有这个:
xnoremap p pgvy
(注意:这仅适用于默认寄存器,但此映射很容易记住)。编写更详细的版本是可能的。
此外,您还可以按 P (Shift+p) 而不是 p 粘贴所选内容而不覆盖剪贴板。
"0
应该包含您复制的内容。打字有点乏味,但"0p
应该可以做你想做的事。
或者,不要预先选择并替换旧行。如果您通过搜索找到这些行,只需一遍又一遍地点击
n.
(在最初的 p
之后),然后当它们全部粘贴后,执行 ndd
,然后根据需要添加尽可能多的 n.
。
在迁移到 Vim 时,我需要做出的最大的心理转变是弄清楚如何按顺序应用组编辑。 IE。我不会在一行上进行一堆编辑,然后在另一行上进行一堆相同的编辑,而是对一堆行进行第一次编辑(使用
.
达到很好的效果),然后在或者,使用宏可能会有所帮助,因为它们非常棒,但有时要正确处理“复杂”的更改会有点乏味。
我经常使用另一个注册表,将您需要的行复制到某个命名的注册表
"ay
,然后从那里粘贴"ap
当您在 Vim 中粘贴所选内容时,它将用所选内容替换默认寄存器。如果粘贴选择内容会清除剪贴板寄存器的内容,那么您的 .vimrc 中很可能有以下行
set clipboard=unnamed
一种选择是删除它并使用显式剪贴板寄存器
"+
另一种选择是使用任何其他显式命名的寄存器 (a-z)。第一次粘贴后,将线拉回到
"c
中,然后使用 "cp
从那里粘贴出来。
通常最好使用文本对象命令(例如
ciw
)来更改内部单词,而不是使用复制/粘贴。此方法的优点是可以使用 .
重复命令轻松重复。
yiw
复制内部单词(复制光标下的单词,说“第一个”)。ciw<C-r>0
更改“第二”,将其替换为“第一”(是 Ctrl-R)。.
更改“第三”,将其替换为“第一”。使用
np
,其中 n
是您要粘贴线条的时间数,例如 3p
将粘贴 3 行。
在 2023 年,您可以使用
P
代替 p
,这将允许您继续粘贴“猛拉”的选择。
添加以下键映射,点击 Ctrlp 进行粘贴。
" Paste Register 0
map <C-p> "0p