在Vim中重复整行

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

yY复制行
要么
d删除(剪切)该行

然后

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

正常模式:查看其他答案。

例如 :

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

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

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

  • :v/foo/m$会将所有不符合模式“foo”的行移动到文件末尾。
  • :+,$g/^\s*class\s\+\i\+/t. 将在光标后面复制表单class xxx所有后续行。

引用: :help range :help :t :help :g :help :m and :help :v

YPYpyyp

复制并粘贴到vim中

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

 yy 

然后移至要粘贴的行并

 p 

你好

将会删除当前行而不删除它

d d

将删除当前行

p

put一个由以前的方法之一抓住的线

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

"ayy这将存储在缓冲区a

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

这有很多变化。

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

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

要记得用“yippee!”

多行之间的数字:

y 7 y p

做这个:

首先,复制当前行,然后复制粘贴。

之后 – 粘贴

以前 – 粘贴

您也可以尝试<Cx> <Cl>,它将从插入模式重复最后一行,并为您带来所有行的完成窗口。 它几乎像<Cp>一样工作

另一个select是去与:

 nmap <Cd> mzyyp`z 

给你保留光标位置的好处。

对于不认识vi的人来说,上面的一些答案可能会误导他,比如“粘贴…在当前行之前/之前”。
它实际上是“粘贴…在光标之后/之前”。

yY复制行
要么
d d删除该行

然后

p将复制或删除的文本粘贴到光标 后面
要么
P粘贴光标 的复制或删除的文本

对于更多的键绑定,你可以访问这个网站: vi完成键绑定列表

我喜欢:Shift-V(立即select整行,让你select其他行,如果你想),Y,P

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

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

vi(Vim)的Windows用户

默认是y p ,但我已经使用这个rebinding一年左右,喜欢它:

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