如何在VIM中以类似于Intellij IDEA/Resharper中的CtrL+或Eclipse中的CtrL+atakbd+D&8593;/&8595;的方式复制整行?
- 人们不再经营VimTutor了吗?这可能在学习如何使用VIM的前五分钟内完成。
- 你想复制这行吗?Y是P租约。:)
y y或y复制行< BR>
to delete(cutting)the line
然后
p将复制或删除的文本粘贴到当前行之后< BR>
p将复制或删除的文本粘贴到当前行之前
- 也可以使用大写Y复制整行。
- 一个很好的观点。不过,出于某种原因,我发现对我来说,打Y两次比轮班Y快
- @我认为Y应该是"从光标复制到末尾"
- 和2YY可用于复制2行(以及任何其他n行)
- @NXQD:是的,有很大一部分用户将Y映射到y$。(与D和C一致;(但不兼容vi(没有人关心)),甚至在:help Y中提出。
- 要复制两行,只需执行yj或yk就可以更快,尤其是因为您不需要在一个字符上进行双精度复制。另外,yk是2yy不能做的向后版本,可以在y9j或y2k等中放回要到达的行数。唯一不同的是,你的计数必须是n-1行,共有n行,但你的大脑无论如何都能知道这一点。
- 另外,使用:yj复制当前行及其下方的行/yk复制当前行及其上方的行
- yy不在我的Mac终端上工作。
- 好吧,这和Intellij思想中的行为不同,因为插入符号保留在同一个位置。p、p或gp将插入符号位置重置为列1。
- 覆盖目标行:Vp。
- 如果这对您不起作用,那么您已经复制了其他人的.vim文件,他们肯定也不知道如何使用vim。
- 这似乎根本没有保留光标位置,它将我的光标移动到行的开头。
- 出于某种原因,"Y"不能在EXC模式下工作。但是,"y 1 y"有效!
- 您如何只使用键盘命令从tmux窗格中的一个vim复制到另一个vim?
- 知道如何在不使用尾随换行符的情况下复制(或粘贴)吗?
- nnoremap :copy .(读:map ctrl-d以正常模式复制当前行)nnoremap yyp(reda:map ctrl-d以复制当前行并粘贴为下面的新行)
正常模式:参见其他答案。
前路:
- :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。
- 你知道在视觉模式下是否有办法做到这一点吗?我最常见的使用模式之一是类似于VisualSelect3行+:d或:y,例如..
- 当您在视觉模式下按:时,它将转换为'<,'>以便它预先选择视觉选择所跨越的行范围。因此,在视觉模式下,:t0将在开始时复制行。
- 对于记录:键入冒号(:)时,将进入命令行模式,可以在其中输入ex命令。vimdoc.sourceforge.net/htmldoc/cmdline.html ex命令非常强大且简洁。YYP解决方案是"正常模式"命令。如果要复制/移动/删除一行或一行的范围较远,则执行ex命令的速度会快得多。
- 被否决不是因为答案本身的问题(尽管它对我的情况不起作用,但我不知道要复制到的行号),而是因为它确实不应该是这个常见搜索问题的首选/接受答案。
- @Mjaggard:不管分数如何,接受的答案总是在最前面。是的,我补充了这个答案作为补充,它似乎很适合这个操作。
- :t.是这个问题的确切答案。
- 如果使用的是相对数,请使用:t +7或:t -7。
- @mjaggard,用:set number打开行号。我每天使用:t,通常从缓冲区中的其他位置复制一行或一系列行(通常使用拆分,以便我可以准确地看到它们是哪一个行号),到光标所在的行。例如,如果我正在写一个降价的演示文稿,并且想在多张幻灯片中复制标题,那么请选择:367t.,复制第367行并将其放在此处。
YP或YP或yyp。
- 不过,Y通常重新映射到y$(扬克(复制)直到行尾(从当前光标位置,而不是行首))。该线在.vimrc中::nnoremap Y y$中
- 别忘了可怜的老江户(24)
再简单不过了!从正常模式:
然后移到要粘贴到和的行
- 你用什么来制作GIF?
- 这是卡姆塔西亚8号工作室完成的。其实很简单。
- @zolt&225;n您可以使用小尺寸的licecap。
- gifcam也是一个简单易用的工具:blog.bahraniapps.com/gifcam
yy
将在不删除的情况下拉入当前行
abKd
将删除当前行
P
是否将put一行通过前面的任何一种方法抓取?
- 这个是第一个,但它的副本被接受了:stackoverflow.com/a/73357/1438029
如果你想换一种方式:—)
"ayy这将把线路存储在缓冲区a中。
"ap这将把缓冲区a的内容放在光标处。
这方面有很多不同之处。
"a5yy这将把5行存储在缓冲区a中。
更多乐趣请参见http://www.vim.org/htmldoc/help.html。
- 谢谢,我用这个做了一个绑定:mapd"ayy"ap
yybp-记住它与"Yippee!"
多行之间有数字:
YKBDYKBDYKBDYKBDYKBDYKBDYKBD
- 7YY相当于Y7Y,可能更容易记住如何操作。
- Y7YP(或7YYP)很少有用;光标保持在复制的第一行上,以便P在源的第一行和第二行之间粘贴复制的行。要复制一个行块,请使用7YYP
- @Nefrubyr或:.,.+7 copy .+7:P
这样做:
首先,YKBDYBKBD复制当前行,然后粘贴。
- 不要键入空格。
- 是的,如果光标在行的末尾,并且您键入如图所示的空格,那么您将复制您在所选行下面拉了2行的行。
yybp-粘贴后
yybp-粘贴之前
- 由于行是重复的,所以内容的最终结果是相同的。
- @A-B-B不过,这里有一个微小的区别——您的光标将落在哪一行上。
您也可以尝试,它将从插入模式中重复最后一行,并为您带来一个包含所有行的完成窗口。它的工作原理几乎就像
- 这是非常有用的,但为了避免按下许多键,我只将其映射到了ctrl-l,这是我的映射:inoremap^l^x^l
另一种选择是:
提供了保留光标位置的优势。
对于不了解vi的人来说,上面的一些答案可能会用"粘贴…"之类的短语误导他。在当前行之后/之前"。
实际上是"粘贴…光标后/前"。
BR/>yy或y复制行< BR>
to delete the line
然后
p将复制或删除的文本粘贴到光标后< BR>
p将复制或删除的文本粘贴到光标之前
< BR>有关更多的密钥绑定,您可以访问以下站点:vi完整的密钥绑定列表
我喜欢:shift+v(立即选择整条线,如果需要可以选择其他线),y,p
1明白了:当你用"p"来放线的时候,它会放在你光标所在的线之后,所以如果你想在你要拉的线之后添加线,在放新线之前不要把光标移到一条线下面。
默认值是yybp,但我已经使用此重新绑定一年左右了,我喜欢它:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
我知道我参加晚会迟到了,但不管怎样,我的.vimrc里有这个:
1 2
| nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR> |
:copy命令只将所选行或范围(始终是整行)复制到作为其参数给出的行号之下。
在正常模式下,它的作用是copy .将这一行复制到这一行的正下方。
在视觉模式下,它变成从选择开始到选择结束到选择结束下面的一行的'<,'> copy '>副本。
对于那些开始学习vi的人来说,这里是一个很好的vi介绍,通过并列列出vi命令来实现典型的WindowsGUI编辑器光标移动和快捷键。它列出了所有基本命令,包括yy(复制行)和p(粘贴后)或p(粘贴前)。
适用于Windows用户的vi(vim)
如果您想复制一行并将其粘贴到当前行的正下方,就像在Sublime CtrL+Shift+中一样,那么您可以将其添加到您的.vimrc文件中。
imap Yp
- 这就剩下了插入模式,只需在末尾加上i就可以重新进入,它会破坏undo,所以在插入模式下复制行的解决方案并不像看起来那么简单。
- 这对我来说非常好:imap Ypi插入模式和nmap Yp正常模式
我喜欢使用这个映射:
因为它使得与本机YP命令一起使用是一致的。