我经常需要在相同或相似的位置将东西粘贴到几条相邻的线上。每次移动到下一行时,必须将光标移回粘贴内容的开头是一件痛苦的事。如何在不移动光标的情况下粘贴(如命令'p')?或者,如何快速将光标恢复到粘贴前的位置?
答案 0 :(得分:24)
不破坏寄存器的最安全方法是执行以下操作:
p`[
如果您想创建一个快捷方式,只需使用适合您的任何vim的地图功能,例如:
noremap p p`[
答案 1 :(得分:10)
每当我有一系列重复几次的步骤时,我都会记录一个宏,这在Vim中很容易。一般方法是
因此,在您的情况下,记录宏的整个按键序列可能是
qxp`[jq
和5@x
重播五次,总共有6次更改。
请注意,第一个q之后的字符是用于记录宏的寄存器,它可以是任何字母,而不仅仅是x。小心你的宏不会将文本拖入目前正在录制的寄存器中,这会让事情变得一团糟!
宏可以是任意长且复杂的。它们可以包含Ex模式命令,甚至可以调用其他宏。
答案 2 :(得分:3)
按CTRL-o可以快速回到粘贴前的位置。这通常会移回到前一个光标位置。
我将来自大型文档的线条粘贴到3个标记之一(在标题下移动线条)。我找到的最快的方法是:
'ap
然后是CTRL-o
答案 3 :(得分:2)
您可以在不离开右侧键盘布局的行的情况下完成此操作(除了 p ofc):
pg;
g; 转到更改列表中列出的上一个位置
更多信息:
:help changelist
:help changes
答案 4 :(得分:-5)
'k'? (如上箭头所示)
如果使用“p”粘贴当前行下方的文本,则光标将位于粘贴内容的第一行。在命令模式下键入“k”会将您带到粘贴内容开头上方的行。