it-swarm.cn

在Vim中复制整行

如何以类似的方式在Vim中复制整行 Ctrl+D 在IntelliJ IDEA/Resharper或 Ctrl+Alt+/ 在Eclipse中?

1492
sumek

yy 要么 Y 复制该行
要么
dd 删除(剪切)该行

然后

p 粘贴复制或删除的文本当前行
要么
P 粘贴复制或删除的文本之前当前行

2555
Mark Biek

普通模式:见其他答案。

方式:

  • :t.将复制该行,
  • :t 7将在第7行之后复制它,
  • :,+t0将复制文件开头的当前行和下一行(,+是范围.,.+1的同义词),
  • :1,t$将从开头到光标位置复制到结尾(1,是范围1,.的同义词)。

如果您需要移动而不是复制,请使用:m而不是:t

如果将它与:g:v结合使用,这可能非常强大: 

  • :v/foo/m$将所有与模式“foo”不匹配的行移动到文件末尾。
  • :+,$g/^\s*class\s\+\i\+/t.将在光标后立即复制class xxx形式的所有后续行。

参考::help range:help :t:help :g:help :m:help :v

375
Benoit

YPYpyyp

279
Linulin

copy and paste in vim

没有比这简单!从正常模式:

yy

然后移动到要粘贴的行和

p
229
Adam

yy

将删除当前行而不删除它

dd

将删除当前行

p

put将被前面任一方法抓取的行

49
pjz

做这个:

第一, yy 复制当前行,然后 p 粘贴。

38
Eric Z Beard

如果你想要另一种方式:-)

"ayy这会将行存储在缓冲区a

"ap这会将缓冲区a的内容放在光标处。

这有很多变化。

"a5yy这将把5行存储在缓冲区a

请参阅 http://www.vim.org/htmldoc/help.html 获取更多乐趣

38
Kwondri

yyp - 记住它与“yippee!”

多行,中间有一个数字:

y7yp

37
theschmitzer

yyp - 贴后

yyP - 粘贴之前

22
yemu

您也可以尝试<C-x> <C-l>,它将从插入模式重复最后一行,并为您提供包含所有行的完成窗口。它的工作方式几乎与<C-p>相似

11
nikolavp

另一种选择是:

nmap <C-d> mzyyp`z

为您提供保留光标位置的优势。

11
Rook

我喜欢: Shift+v (如果需要,立即选择整行,让你选择其他行),y,p

10
Gabe

对于不了解vi的人,上面的一些答案可能会误导他,例如“粘贴......之后/之前” 当前行”。
实际上是“粘贴......之前/之后 光标”。

yy 要么 Y 复制该行
要么
dd 删除该行

然后

p 粘贴复制或删除的文本 光标
要么
P 粘贴复制或删除的文本之前 光标


有关更多键绑定,您可以访问此站点: vi完整键绑定列表

10
Michael

1陷阱:当你使用“p”来放线时,它会把它放在 之后 你的光标所在的行,所以如果你想在你正在线的线之后添加这条线,不要在放入新行之前将光标向下移动一行。

3
cori

默认是 yyp,但我一直在使用这种重新绑定一年左右而且喜欢它:

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv

2
Chris Penner

对于那些开始学习vi的人来说,通过列出并排vi命令到典型的Windows GUI Editor光标移动和快捷键,这里是对vi的一个很好的介绍。它列出了所有基本命令,包括 yy (复制线)和 p (粘贴后)或 P(之前粘贴)。

Windows用户的vi(Vim)

1
ap-osd

我知道我迟到了,但无论如何;我在.vimrc中有这个:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

:copy命令只是将选定的行或范围(总是整行)复制到作为参数给出的行号下面。

在正常模式下,这样做是copy . 将此行复制到此行下方

在视觉模式中,它变成'<,'> copy '> 从选择开始到选择结束复制到选择结束下面的行

1
DarkWiiPlayer

如果您想要复制一行并将其粘贴到当前的下方,就像在Sublime中一样 Ctrl+Shift+D,然后你可以将它添加到.vimrc文件中。

imap <S-C-d> <Esc>Yp

0
jedi

我喜欢使用这个映射:

:nnoremap yp Yp

因为它使得它与本机YP命令一起使用是一致的。

0
yolenoyer