题
如何以类似的方式在 Vim 中复制整行 控制键+D 在 IntelliJ IDEA/Resharper 中或 控制键+替代+↑/↓ 在日食中?
解决方案
yy 或者 是 复制该行
或者
dd 删除(剪切)该行
然后
p 粘贴复制或删除的文本 后 当前行
或者
磷 粘贴复制或删除的文本 前 当前行
其他提示
正常模式:查看其他答案。
这 前任 方式:
: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
YP
或者 Yp
或者 yyp
.
没有比这更简单的了!从正常模式:
yy
然后移至您要粘贴的行并
p
yy
将拉出当前行而不删除它
dd
将删除当前行
p
将要 put
通过上述任一方法抓取的线
如果你想要另一种方式:-)
"ayy
这会将行存储在缓冲区中 a
"ap
这将把缓冲区的内容 a
在光标处。
这有很多变体。
"a5yy
这会将 5 行存储在缓冲区中 a
看 http://www.vim.org/htmldoc/help.html 为了更多乐趣
做这个:
第一的, yy 复制当前行,然后 p 粘贴。
yyp - 用“yippee!”来记住它
多行之间有一个数字:
y7yp
yyp - 粘贴后
yy磷 - 粘贴在之前
您还可以尝试 <C-x><C-l> ,它将重复插入模式下的最后一行,并为您带来一个包含所有行的完成窗口。它的工作方式几乎类似于 <C-p>
另一种选择是:
nmap <C-d> mzyyp`z
为您提供保留光标位置的优势。
对于不懂 vi 的人来说,上面的一些答案可能会用“粘贴...”之类的短语误导他。在那之后 当前行".
其实就是“贴...在那之后 光标".
yy 或者 是 复制该行
或者
dd 删除该行
然后
p 粘贴复制或删除的文本 后 这 光标
或者
磷 粘贴复制或删除的文本 前 这 光标
如需了解更多按键绑定,您可以访问此站点: vi 完整按键绑定列表
我喜欢:转移+v (立即选择整行,并让您根据需要选择其他行),y,p
1 个陷阱:当你使用“p”来放置该行时,它会将其放置 后 光标所在的行,因此,如果您想在要拉出的行之后添加该行,请不要在放置新行之前将光标向下移动一行。
默认为 yyp, ,但我已经使用这种重新绑定一年左右并且喜欢它:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
我知道我参加聚会迟到了,但无论如何;我的 .vimrc 中有这个:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
这 :copy
命令只是将选定的行或范围(总是整行)复制到作为其参数给出的行号下方。
在正常模式下,它的作用是 copy .
将此行复制到该行的正下方.
在视觉模式下它变成了 '<,'> copy '>
从选择开始到选择结束复制到选择结束下方的行.
对于那些开始学习 vi 的人来说,这里是对 vi 的一个很好的介绍,通过并排列出 vi 命令到典型的 Windows GUI 编辑器光标移动和快捷键。它列出了所有基本命令,包括 yy (复制行)和 p (粘贴在后面)或 磷(粘贴在前面)。
如果您想复制一行并将其粘贴到当前行的正下方,就像在 Sublime 中一样 控制键+转移+D, ,然后您可以将其添加到您的 .vimrc
文件。
imap <S-C-d> <Esc>Yp
我喜欢使用这个映射:
:nnoremap yp Yp
因为它使得它与本机一起使用保持一致 YP
命令。