用 vi 缓冲区中的行替换一行

用 vi 缓冲区中的行替换一行

ccdd将一行复制到我的粘贴缓冲区中。然后我去一个新地点。

我想替换我看到的一行。所以我输入p Down dd.

有没有更简单的方法(更少的击键)?

答案1

您可以键入V以选择该行,然后p替换它。

答案2

另一种方法是"_ddp

"_dd将当前行删除到空缓冲区。这不会覆盖您刚刚复制的内容,我发现这很多次很有帮助!粘贴p您之前复制的行。

就击键而言可能不会更短,但知道这是一个选项可能会非常有帮助!

答案3

安格斯和托尔已经给出了简短的答案,所以这里有一些额外的探索。

如果由于某种原因您想在粘贴之前删除,您可以利用编号寄存器。寄存器包含最后一次或"0拉出的文本,但不删除。通过寄存器存储您最近完成的 9 次删除/剪切。所以:yY"1"9

  • 如果你猛拉 with yy,你可以替换为dd"0P
  • 如果用ddor剪切cc,则可以用 替换dd"2P。 (不是dd"1P因为dd填充"1。)

尝试:help "0获取更深入的信息。

答案4

假设您想将第 1 行替换为第 3 行,但您无法做到:1m3|2d

这有效地将第 1 行移动到第 3 行,并删除第 2 行(即旧的第 3 行)

相关内容