如何在Vim中复制整行,方法与IntelliJ IDEA/Resharper中的Ctrl+D或Ctrl+Alt类似+↑/↓ 在Eclipse中?


当前回答

正常模式:参见其他答案。

Ex方式:

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

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

如果您将其与:g或:v结合使用,这将非常强大:

:v/foo/m$将将所有不匹配模式“foo”的行移动到文件末尾。:+,$g/^\s*类\s\+\i\+/t。将在光标之后复制表单类xxx的所有后续行。

参考::help range、:help:t、:help:g、:help:m和:help:v

其他回答

yyp-粘贴后

yyP-粘贴之前

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

Windows用户的vi(Vim)

1 gotcha:当您使用“p”放置行时,它会将其放置在光标所在的行之后,因此如果您想在拖动的行之后添加行,请不要在放置新行之前将光标向下移动一行。

如果您想复制一行并将其粘贴到当前行的下方,就像Sublime Ctrl+Shift+D中一样,那么可以将其添加到.virc文件中。

nmap<S-C-d><Esc>Yp

或者,对于插入模式:

imap<S-C-d><Esc>Ypa

我喜欢使用此映射:

:nnoremap yp Yp

因为它与原生YP命令一起使用是一致的。