在Vim中复制整行

时间:2008-09-16 15:02:53

标签: vim editor keyboard-shortcuts vi

如何在类似于IntelliJ IDEA / Resharper中的 Ctrl + D Ctrl + <的方式中复制Vim中的整行Eclipse中的kbd> Alt + /

21 个答案:

答案 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)

YPYpyyp

答案 3 :(得分:231)

copy and paste in vim

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

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 (粘贴之前)。

vi (Vim) for Windows Users

答案 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