让我们说光标位于N行,我们用yy将它拉出来,我们想要粘贴到光标下面的20行.是否可以在不将光标向下移动的情况下这样做,如20j,p,20k?尝试20p,但它只粘贴了20个重复的行.一些谷歌搜索后我找不到解决方案,我不能是唯一需要这个解决方案的人.
我想要做的是猛拉(yy)当前行,粘贴到下面20行,向下走一行(j),猛拉(yy)当前行,粘贴到33行以下,向下走一行(j),猛拉(yy)当前行,粘贴到下面的41行,向下一行(j),冲洗并重复
我不敢相信这个问题已经存在五年了,却没有人真正给出正确的答案......
您正在寻找的是 ex 命令:put(https://vimhelp.org/change.txt.html#%3Aput)。
从文档中:
:[line]pu[t] [x]
Put the text [from register x] after [line] (default current line).
Run Code Online (Sandbox Code Playgroud)
因此,对于您的示例,步骤将是:
yy
:+20put
Run Code Online (Sandbox Code Playgroud)
另请参阅此 reddit 帖子,我发现它非常有帮助:https://www.reddit.com/r/vim/comments/p7blsn/question_how_to_paste_register_to_a_specific_line/
您可以使用以下:co[py]命令:
:[range]co[py] {address} :co :copy
Copy the lines given by [range] to below the line
given by {address}.
Run Code Online (Sandbox Code Playgroud)
因此,对于给出的示例::co .+20将当前行向下复制 20 行。
如果您正在寻找内置命令/选项pP,则没有人.你总是可以按``回到原来的位置.
如果要创建自定义映射,有很多方法.例如写一个函数,编写一个自定义命令等.
如果您只想自动执行某些操作,例如,对于2-20之间的每一行,复制并复制到当前行下面的5行.你可以考虑使用:g命令.