繁体   English   中英

在 Vim 中粘贴而不移动光标

[英]Paste in Vim without moving the cursor

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

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

p`[

如果您想创建快捷方式,只需使用任何适合您的 vim 映射函数,例如:

noremap p p`[

每当我有一系列步骤要重复几次时,我都会记录一个宏,这在 Vim 中非常简单。 一般方法是

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

所以在你的情况下,记录宏的整个击键序列可能是

qxp`[jq

5@x重播它五次,总共 6 次更改。

请注意,第一个 q 之后的字符是用于记录宏的寄存器,它可以是任何字母,而不仅仅是 x。 请注意您的宏不会将文本猛拉到当前正在录制的寄存器中,这会使事情变得一团糟!

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

您可以通过按 CTRL-o 快速返回粘贴前的位置。 这通常会移回先前的光标位置。

我正在将整个大文档中的行粘贴到 3 个标记之一(移动到标题下的行)。 我找到的最快的方法是:

'ap

后跟 CTRL-o

您可以在不将行保留在正确的键盘布局中的情况下执行此操作(除了p ofc):

pg;

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

欲了解更多信息:

:help changelist
:help changes

'k' ? (如上箭头所示)

如果使用“p”将文本粘贴到当前行下方,则光标将位于粘贴内容的第一行。 在命令模式下键入 'k' 会将您带到粘贴内容开头上方的行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM