如何在类似于IntelliJ IDEA / Resharper中的 Ctrl + D 或 Ctrl + <的方式中复制Vim中的整行Eclipse中的kbd> Alt + ↑ / ↓?
答案 0 :(得分:2541)
y y 或 Y 复制该行
或
d d 删除(剪切)该行
然后
p 在当前行之后粘贴复制或删除的文本
或
P 在当前行之前粘贴复制或删除的文本
答案 1 :(得分:381)
普通模式:见其他答案。
Ex方式:
: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
答案 2 :(得分:280)
YP
或Yp
或yyp
。
答案 3 :(得分:231)
没有比这更简单!从正常模式:
yy
然后移动到要粘贴的行和
p
答案 4 :(得分:49)
ý ý
将在不删除当前行的情况下猛拉
d d
将删除当前行
P
将put
一条线抓住之前的任何一种方法
答案 5 :(得分:38)
如果你想要另一种方式: - )
"ayy
这会将该行存储在缓冲区a
"ap
这会将缓冲区a
的内容放在光标处。
这有很多变化。
"a5yy
这会将5行存储在缓冲区a
请参阅http://www.vim.org/htmldoc/help.html了解更多信息
答案 6 :(得分:37)
y y p - 请记住“yippee!”
中间有数字的多行:
ý 7 ý P
答案 7 :(得分:37)
这样做:
首先, y y 复制当前行,然后 p 进行粘贴。
答案 8 :(得分:21)
y y p - 粘贴后
y y P - 粘贴之前
答案 9 :(得分:11)
您还可以尝试&lt; C-x&gt;&lt; C-1&gt;这将从插入模式重复最后一行,并为您提供包含所有行的完成窗口。它的工作方式几乎与&lt; C-p&gt;
相同答案 10 :(得分:11)
另一种选择是:
nmap <C-d> mzyyp`z
为您提供了保留光标位置的优势。
答案 11 :(得分:10)
我喜欢: Shift + v (立即选择整行,如果需要,可以选择其他行),y,p
答案 12 :(得分:10)
对于不了解vi的人,上面的一些答案可能会误导他,例如&#34;粘贴...之后/之前 当前行 &#34 ;.
实际上&#34;粘贴...在 光标 &#34;之后/之前。
y y 或 Y 复制该行
或
d d 删除该行
然后
p 在 光标之后粘贴复制或删除的文本
或
P 在 光标之前粘贴复制或删除的文本
有关更多键绑定,您可以访问此站点:vi Complete Key Binding List
答案 13 :(得分:3)
1问题:当你使用“p”来放线时,它会把放在光标所在的行之后,所以如果你想在行之后添加一行你就是,在放入新行之前,不要将光标向下移动一行。
答案 14 :(得分:2)
默认是 y y p ,但我一直在使用这种重新绑定一年左右而且喜欢它:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
答案 15 :(得分:1)
对于那些开始学习vi的人来说,这里是对vi的一个很好的介绍,它将并排的vi命令列入典型的Windows GUI Editor光标移动和快捷键。它列出了所有基本命令,包括 yy (复制线)和 p (粘贴后)或 P (粘贴之前)。
答案 16 :(得分:1)
我知道我迟到了,但无论如何;我在.vimrc中有这个:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
:copy
命令只是将选定的行或范围(总是整行)复制到作为参数给出的行号下面。
在普通模式下,copy .
将此行复制到此行下方。
在视觉模式下,它会从选择开始到选择结束再到选择结束时的行,变成'<,'> copy '>
副本。
答案 17 :(得分:0)
如果您想要复制一行并将其粘贴到当前的下方,就像在Sublime Ctrl + Shift + D ,然后您可以将其添加到.vimrc
文件中。
imap <S-C-d> <Esc>Yp
答案 18 :(得分:0)
我喜欢使用这种映射:
:nnoremap yp Yp
因为它使得它与本机YP
命令一起使用是一致的。
答案 19 :(得分:0)
我用的这个映射,和vscode类似。我希望它有用!!!。
nnoremap <A-d> :t. <CR>==
inoremap <A-d> <Esc>:t. <CR>==gi
vnoremap <A-d> :t$ <CR>gv=gv
答案 20 :(得分:0)
我更喜欢在 .vimrc
中定义自定义键映射 Ctrl+D 以在 normal 模式和插入模式:
" duplicate line in normal mode:
nnoremap <C-D> Yp
" duplicate line in insert mode:
inoremap <C-D> <Esc> Ypi