在vi编辑器中,我需要复制一个块。有很多方法,但有一种方法很快。
以某种方式标记第一行,
然后以某种方式标记结束行,
然后输入一些命令来复制带标记的行。
然后复制,可能使用'p',但不确定。
有人知道命令(不是yy或10yy)吗?提前致谢。
答案 0 :(得分:76)
只需使用 V 选择行或 v 选择字符或 Ctrl v 选择一个块。
当选择范围跨越您想复制的区域时,只需点击 y 并使用 p 将其粘贴到您喜欢的任何地方......
答案 1 :(得分:41)
<强> Their Documentation says: 强>
剪切和粘贴:
使用相同的步骤执行复制和粘贴,但步骤4除外,您将按y而不是d:
d = delete
= cut
y = yank
= copy
答案 2 :(得分:30)
另一个可能更容易记住的选项是在 m a 和 m b的两行上放置标记,然后运行:'a,'byank
。
完成此任务的许多不同方法,只提供另一种方法。
答案 3 :(得分:15)
听起来你想在文件中放置标记。
m x 在光标下放置一个名为 x 的标记
y ' x 猛拉光标当前位置和包含标记x 的行之间的所有内容。
您可以使用' x 将光标移动到带有标记的行。
您可以使用` x (后退)来移动到商标的确切位置。
我一直在做的一件事是将光标和标记x之间的所有内容放入剪贴板。
你可以这样做:
“ + ý ' X
注意:在某些环境中,剪贴板缓冲区由*
代替,而不是+
。
类似的问题和一些好的答案:
答案 4 :(得分:4)
键盘快捷键是:
复制:将光标放在块的开头并按 md ,然后转到块的结尾并按 y'd 。这将选择要粘贴的块按p
对于剪切:将光标放在块的开头并按 ma ,然后转到块的结尾并按 d'a 。这将选择要粘贴的块按p
答案 5 :(得分:4)
我发现下面的命令更加方便。如果要复制6到12行,并从当前光标位置粘贴。
:6,12 co .
如果要复制6到12行并从第100行粘贴。
:6,12t100
来源:https://www.reddit.com/r/vim/comments/8i6vbd/efficient_ways_of_copying_few_lines/
答案 6 :(得分:1)
您可以像在vi中那样执行此操作,例如从3020到结尾抽取行,执行此命令(将块写入文件):
:3020,$ w / tmp / yank
要在另一行/文件中写入此块,转到所需位置并执行下一个命令(插入之前写入的文件):
:r / tmp / yank
(提醒:不要忘记删除文件:/ tmp / yank)