91

在 vi/vim 编辑器中,我需要复制一个块。有很多方法,但一种方法非常快。

  1. 以某种方式标记第一行,

  2. 然后以某种方式标记结束线,

  3. 然后输入一些命令来复制标记的行。

  4. 然后复制,可能使用'p',但不确定。

有人知道命令(不是 yy 或 10yy)吗?提前致谢。

4

7 回答 7

154

只需用于V选择行或v选择字符或Ctrlv选择块。

When the selection spans the area you'd like to copy just hit yand use pto paste it anywhere you like...

于 2012-11-19T03:10:56.203 回答
120

他们的文档说:

剪切和粘贴:

  1. 将光标放在要开始切割的位置。
  2. v选择字符(或大写V选择整行)。
  3. 将光标移动到要剪切的内容的末尾。
  4. d剪切(或y复制)。
  5. 移动到您要粘贴的位置。
  6. P粘贴到光标之前,或p粘贴到之后。

使用相同的步骤执行复制和粘贴,除了步骤 4 中您将按 y 而不是 d:

d= delete=cut

y= yank=copy

于 2015-09-22T11:52:33.363 回答
44

另一个可能更容易记住的选项是用maand在两行上放置标记mb,然后运行:'a,'byank

许多不同的方法来完成这项任务,只是提供另一种。

于 2012-11-19T11:34:53.257 回答
23

我发现下面的命令更方便。如果要从 6 到 12 复制行并从当前光标位置粘贴。

:6,12 co .

如果要从第 6 行复制到第 12 行并从第 100 行粘贴。

:6,12t100

来源:https ://www.reddit.com/r/vim/comments/8i6vbd/efficient_ways_of_copying_few_lines/

于 2018-05-09T15:34:42.497 回答
20

听起来您想在文件中放置标记

mx在光标下放置一个名为x的标记

y'x拉动光标当前位置和包含标记 x的行之间的所有内容。

您可以使用'x简单地将光标移动到您的标记所在的行。

您可以使用`x(反引号)移动到标记的确切位置


我一直在做的一件事是将光标和标记 x 之间的所有内容拉到剪贴板中。

你可以这样做:

"+y'x

注意:在某些环境中,剪贴板缓冲区由 a*而不是 a表示+


类似的问题有一些很好的答案:

于 2012-11-19T03:28:48.383 回答
11

键盘快捷键是:

  1. 对于复制:将光标放在块的开头并按md ,然后转到块的末尾并按y'd。这将选择要粘贴的块按 p

  2. 对于剪切:将光标放在块的开头并按ma ,然后转到块的末尾并按d'a。这将选择要粘贴的块按 p

于 2018-03-15T18:49:46.627 回答
1

您可以像在 vi 中一样执行此操作,例如将行从 3020 拉到末尾,执行以下命令(将块写入文件):

:3020,$ w /tmp/yank

并将此块写入另一行/文件,转到所需位置并执行下一个命令(插入之前写入的文件):

:r /tmp/yank

(提醒:不要忘记删除文件:/tmp/yank)

于 2017-12-13T01:44:43.323 回答