在Vim中重复整行
如何在Vim中以类似于在IntelliJ IDEA / Resharper中的Ctrl + D或在Eclipse中按Ctrl + Alt + ↑ / ↓的方式复制整行?
y或Y复制行
要么
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
YP
或Yp
或yyp
。
没有比这更简单! 从正常模式:
yy
然后移至要粘贴的行并
p
你好
将会删除当前行而不删除它
d d
将删除当前行
p
将put
一个由以前的方法之一抓住的线
如果你想另一种方式:-)
"ayy
这将存储在缓冲区a
"ap
这将把缓冲区a
的内容放在光标处。
这有很多变化。
"a5yy
这将存储在缓冲区a
的5行
你要记得用“yippee!”
多行之间的数字:
y 7 y p
做这个:
首先,复制当前行,然后复制粘贴。
之后 – 粘贴
你以前 – 粘贴
您也可以尝试<Cx> <Cl>,它将从插入模式重复最后一行,并为您带来所有行的完成窗口。 它几乎像<Cp>一样工作
另一个select是去与:
nmap <Cd> mzyyp`z
给你保留光标位置的好处。
对于不认识vi的人来说,上面的一些答案可能会误导他,比如“粘贴…在当前行之前/之前”。
它实际上是“粘贴…在光标之后/之前”。
y或Y复制行
要么
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