我是否可以说在特定行(x)复制内容并粘贴到当前行而不需要转到x。
现在,我需要输入:x<Enter>yy<C-o>p
。我只是想看看能否更有效地完成这项工作。
答案 0 :(得分:12)
您可以使用:t
。
例如,如果你在第77行,并且想要在当前行下面复制第7行,即#78,你只需:
:7t.
执行此操作后,光标将位于第78行,即新“粘贴”的行。
阅读:h :t
了解详细信息,您可能也想知道强大的:h range
。
:t
而不是y/Y
的另一个优点是,您保持"
注册不受影响。
答案 1 :(得分:5)
在Vim中抽取文本的许多方法
:copy
或:t
命令可以复制一行。例如:42t .
:t
可以使用搜索模式的范围。例如:?foo?t.
:yank
划一条线。例如:43y
:global
命令对多行进行Yank /复制。例如:g/foo/y A
ma?foo<cr>yy`ap
<c-o>
类似于使用标记跳回来。g;
移至更改列表中的旧位置。 (与商标相似)如需更多帮助,请参阅:
:h :t
:h range
:h :y
:h m
:h g;
:h ctrl-o
答案 2 :(得分:4)
您可以使用此命令
:x,xy
这会在不移动光标的情况下拉出'x'线,然后你可以用p
粘贴修改强>
您可以将命令缩短为
:xy
这将抓住'x'线。如果你想要一系列线条,你可以这样做:
:x,x+10y
那将会划线x - (x + 10)
答案 3 :(得分:0)
您可以使用getline()
函数读取该行,使用append()
函数进行编写:
call append('.',getline('42'))
如果需要,您可以将其捆绑到命令:
command! -nargs=1 FetchLine call append('.',getline(<q-args>))
FetchLine 42