粘贴在Vim中而不移动光标

aeh*_*lke 25 vim

我经常需要在相同或相似的位置将东西粘贴到几个相邻的线上.每次移动到下一行时,必须将光标移回粘贴内容的开头是一件痛苦的事.如何在不移动光标的情况下粘贴(如命令'p')?或者,如何快速将光标恢复到粘贴前的位置?

car*_*arl 24

不破坏寄存器的最安全方法是执行以下操作:

p`[
Run Code Online (Sandbox Code Playgroud)

如果要创建快捷方式,只需使用适合您的任何vim的地图功能,例如:

noremap p p`[
Run Code Online (Sandbox Code Playgroud)


Ste*_*e K 10

每当我有一系列重复几次的步骤时,我都会记录一个宏,这在Vim中很容易.一般方法是

  1. 将光标定位在要进行第一次更改的位置.
  2. 键入qx以开始记录击键.
  3. 进行第一次编辑.
  4. 将光标移动到第二次编辑应该开始的位置.
  5. 再次点击q退出录音.
  6. 输入@x重播宏并进行下一次编辑.@命令需要计数,因此您可以使用一个命令重复编辑任意次数.

因此,在您的情况下,记录宏的整个按键序列可能是

qxp`[jq
Run Code Online (Sandbox Code Playgroud)

5@x重播五次,共计6次更改.

请注意,第一个q之后的字符是一个记录宏的寄存器,它可以是任何字母,而不仅仅是x.小心你的宏不会将文本拖入目前正在录制的寄存器中,这会让事情变得一团糟!

宏可以是任意长且复杂的.它们可以包含Ex模式命令,甚至可以调用其他宏.


Cyc*_*l0n 5

您可以在不保留右侧键盘布局中的行的情况下完成此操作(除了p ofc 之外):

pg;
Run Code Online (Sandbox Code Playgroud)

G; 转到更改列表中列出的上一个位置

欲了解更多信息:

:help changelist
:help changes
Run Code Online (Sandbox Code Playgroud)