题 在Vim中复制整行


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


1310
2017-09-16 15:02


起源


人们不再运行vimtutor吗?这可能是在学习如何使用Vim的前五分钟内。 - dash-tom-bang
waaah,心中一阵,绝对没有跑过 vimtutor,很棒的提示 - Ralph Callaway
你想复制这一行吗? YES P租。 :) - Stavr00


答案:


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

然后

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


2247
2017-09-16 15:06



也可以使用大写Y来复制整行。 - camflan
一个很好的观点。但是出于某些原因,我发现对于我而言,比SHIFT-y快两倍 - Mark Biek
@camflan我认为Y应该是“从光标复制到结尾” - nXqd
和2yy可用于复制2行(和任何其他n行) - Amir Ali Akbari
要复制两行,它甚至更快 yj 要么 yk,特别是因为你没有在一个角色上加倍。加, yk 是一个向后版本 2yy 做不到,你可以把行数放到后面 y9j 要么 y2k等等。唯一不同的是你的计数必须 n-1 共计 n 但是你的头脑无论如何都可以学习。 - zelk


普通模式:见其他答案。

防爆 办法:

  • :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


356
2018-04-17 15:17



当你按下 : 在视觉模式下,它被转换为 '<,'> 所以它预先选择了视觉选择跨越的线范围。所以,在视觉模式中, :t0将在开头复制行。 - Benoit
对于记录:当您键入冒号(:)时,您将进入命令行模式,您可以在其中输入Ex命令。 vimdoc.sourceforge.net/htmldoc/cmdline.html Ex命令可以非常强大和简洁。 yyp解决方案是“正常模式”命令。如果要复制/移动/删除较远的行或行范围,Ex命令可以快得多。 - Niels Bom
Downvoted不是因为答案问题(虽然它对我的情况不起作用,我不知道我要复制的行号)但是因为它真的不应该是这个的最高/接受的答案常见问题。 - mjaggard
@mjaggard:无论得分如何,接受的答案总是排在最前面。是的,我将这个答案作为补充添加,似乎它很适合OP。 - Benoit
:t. 是这个问题的确切答案。 - Burak Erdem


YP 要么 Yp 要么 yyp


272
2017-09-16 15:07



Y 通常会重新映射到 y$ (但是,直到行尾(从当前光标位置,而不是行的开头)猛拉(复制))。有了这条线 .vimrc: :nnoremap Y y$ - Aaron Thoma
不要忘记可怜的老人 yyP - icc97


copy and paste in vim

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

yy

然后移动到要粘贴的行和

p

213
2018-02-07 22:20



你用什么来制作gif? - Zoltán
这是用Camtasia Studio 8完成的。实际上非常简单。 - Adam
@Zoltán你可以使用小尺寸的LiceCap - onmyway133
GifCam也是一个简单易用的工具: blog.bahraniapps.com/gifcam - Jared


ÿÿ

将删除当前行而不删除它

dd

将删除当前行

p

put 以前任何一种方法都抓住了一条线


44
2017-09-16 15:04



这是第一个,但接受重复: stackoverflow.com/a/73357/1438029 - Geoffrey Hale


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

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

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

这有很多变化。

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

看到 http://www.vim.org/htmldoc/help.html 为了更多的乐趣


37
2017-09-16 15:37



谢谢,我用它作为绑定:map <Leader> d“ayy”ap - frbl


ÿÿp  - 用“yippee”记住它!

多行,中间有一个数字:

ÿ7ÿp


35
2017-09-16 15:16



7yy相当于y7y,可能更容易记住怎么做。 - graywh
y7yp(或7yyp)很少有用;光标保留在复制的第一行上,以便p粘贴源的第一行和第二行之间的复制行。要复制一行代码,请使用7yyP - Nefrubyr
@Nefrubyr或 :.,.+7 copy .+7 :P - DarkWiiPlayer