如何以类似于IntelliJ IDEA/Resharper中的Ctrl+D或Eclipse中的Ctrl+Alt+↑/️的方式复制Vim中的整行?
这样做:
首先,yy复制当前行,然后p粘贴。
yy
将拉出当前行而不删除它
dd
将删除当前行
p
将put为前面任何一个方法捕获的行
put
1个问题:当您使用“p”放置该行时,它会将其之后放在光标所在的行上,因此如果您想在您正在拉动的行之后添加该行,请不要在放置新行之前将光标向下移动一行。
yy或Y复制该行(助记符:yank)或dd到delete行(Vim将您删除的内容复制到剪贴板般的“寄存器”中,就像削减操作一样)
然后
p到p复制或删除的文本之后当前行或P到p复制或删除的文本之前当前行
YP或Yp或yyp。
YP
Yp
yyp
yyp-用“yippee!
多行,中间有一个数字:
y7yp
如果你想要另一种方式:
"ayy:这将把该行存储在缓冲区a中。
"ayy
a
"ap:这将把缓冲区a的内容放在光标上。
"ap
这方面有许多变化。
"a5yy:这将在缓冲区a中存储5行。
"a5yy
看到“Vim帮助文件更多的乐趣。
您还可以尝试,它将重复插入模式中的最后一行,并为您带来一个包含所有行的完成窗口。它的工作原理几乎类似于
另一种选择是:
nmap <C-d> mzyyp`z
为您提供保留光标位置的优势。
我喜欢:Shift+v(立即选择整行,如果需要,可以选择其他行), y, p
普通模式:查看其他答案。
Ex方式:
:t.
:t 7
:,+t0
,+
.,.+1
:1,t$
1,
1,.
如果您需要移动而不是复制,请使用:m而不是:t。
:m
:t
如果你将它与:g或:v结合起来,它会非常强大:
:g
:v
:v/foo/m$
:+,$g/^\s*class\s\+\i\+/t.
class xxx
参考::help range、:help :t、:help :g、:help :m和:help :v
:help range
:help :t
:help :g
:help :m
:help :v
yyp-粘贴后
yyP-粘贴之前
没有比这更简单的了!从普通模式:
然后移动到要粘贴的行,然后
默认值是yyp,但我已经使用这个重新绑定了一年左右,并且喜欢它:
"将Y设置为重复行,也可以在可视模式下工作。nnoremap y yypvnoremap Y y'>pgv
对于那些开始学习vi的人来说,这里是一个很好的vi介绍,并列列出了典型的Windows GUI编辑器光标移动和快捷键的vi命令。它列出了所有基本命令,包括yy(复制行)和p(粘贴后)或P(粘贴前)。
vi(Vim)Windows用户
对于不知道vi的人来说,上面的一些答案可能会误导他,比如“粘贴…当前线路之后/之前”。它实际上是“粘贴…后/前游标"yy或Y复制行或dd删除行
p将复制或删除的文本之后粘贴到光标或P将复制或删除的文本粘贴到光标之前
有关更多键绑定,您可以访问此站点:vi完整的密钥绑定列表
如果您想复制一行并将其粘贴到当前喜欢的下方,就像SublimeCtrl+Shift+D中一样,那么您可以将其添加到.vimrc文件中。
.vimrc
nmap <S-C-d> <Esc>Yp
或者,对于插入模式:
imap <S-C-d> <Esc>Ypa
我喜欢使用这个映射:
:nnoremap yp Yp
因为它使与本机YP命令一起使用保持一致。
我知道我迟到了,但不管怎样;我有这个在我的. vimrc:
nnoremap <C-d> :copy .<CR>vnoremap <C-d> :copy '><CR>
:copy命令只是将选定的行或范围(总是整行)复制到作为其参数给出的行号以下。
:copy
在正常模式下,这是copy .将此行复制到此行的正下方。
copy .
在视觉模式下,它变成'<,'> copy '>从选择开始到选择结束复制到选择结束下面的行。
'<,'> copy '>
我使用这个映射,它类似于vscode。我希望它是有用的!!!。
nnoremap <A-d> :t. <CR>==inoremap <A-d> <Esc>:t. <CR>==givnoremap <A-d> :t$ <CR>gv=gv
我更喜欢在.vimrc中定义一个自定义键映射Ctrl+D,以在正常模式和插入模式下复制当前行:
" duplicate line in normal mode:nnoremap <C-D> Yp" duplicate line in insert mode:inoremap <C-D> <Esc> Ypi