经常需要将某些内容粘贴到相邻的多行中,位置相同或相似。每次移动到下一行时,都必须将光标移回要粘贴的内容开头,这很麻烦。如何在无需移动光标的情况下进行黏贴(例如命令“p”)?或者,如何快速将光标返回到粘贴之前的位置?
经常需要将某些内容粘贴到相邻的多行中,位置相同或相似。每次移动到下一行时,都必须将光标移回要粘贴的内容开头,这很麻烦。如何在无需移动光标的情况下进行黏贴(例如命令“p”)?或者,如何快速将光标返回到粘贴之前的位置?
保证不破坏寄存器最安全的方法是执行以下操作:
p`[
如果您想创建快捷方式,只需使用适合您的任何vim映射函数,例如:
noremap p p`[
在我需要重复多次一个步骤序列时,我通常会使用宏进行录制,这在Vim中非常简单。一般的方法如下:
所以在你的情况下,记录宏的完整按键序列可能是:
qxp`[jq
使用5@x
来重复播放它五次,共进行6个更改。
请注意,第一个q后面的字符是用来记录宏的寄存器,可以是任何字母,不一定是x。只需小心您的宏不要将文本复制到当前正在记录的寄存器中,否则会使事情变得混乱!
宏可以任意长且复杂。它们可以包含 Ex 命令,甚至调用其他宏。
你可以在保持正确的键盘布局的情况下完成它(当然除了p):
pg;
g; 跳转到修改列表中列出的上一个位置
更多信息:
:help changelist
:help changes
'ap
'k'?(如上箭头)
如果您使用 'p' 将文本粘贴到当前行下方,则光标将位于粘贴内容的第一行。在命令模式下键入 'k',将带您到粘贴内容开始的上一行。
nnoremap p P\
[j`: 这个命令可以将内容粘贴到当前光标的前面,并保持光标在原地,然后再向下移动一行。只需按下p键,您就可以对代码进行注释、在连续的行上添加前缀/后缀等操作,只要这些内容对齐即可。非常灵活。 - Steven Lu.
在重复之前的P
时也遵循这个 remap?因为当前当我运行nnoremap P P\
[时,我得到了我想要的
P行为,但是如果我在之后按下
.而不是另一个
P,它只会重新运行原始的
P`。 :( - mtraceur<ctrl+o>
操作后,是否可以使得此映射对于键p
生效?使用此映射,在插入模式的ctrl+o p
中会额外出现'[]'
。 - Tun