如何粘贴光标所在的行?
命令p粘贴在光标下方,并粘贴到光标上方。 粘贴光标所在行的命令是什么?
这完全取决于您正在粘贴的registry中的数据types。 如果数据是面向行的数据(例如y yed),它将作为整行粘贴在光标上方或下方。 如果数据是面向字符的(例如用y 2 w抽出),那么它将被粘贴在当前行的光标位置或之前。
有关:help linewise-registertypes和put命令之间的相互作用的更多信息,请参阅:help linewise-register 。 
gvim中的编辑菜单列出了以下内容:
- 
Paste = “ + g P 
- 
放在前面[ p 
- 
Put After = ] p 
如果您在Windows中运行vim,可以按照以下步骤操作,使Ctrl + C和Ctrl + V按预期工作:
 source $VIMRUNTIME/mswin.vim behave mswin 
如果要保留当前行,请将其粘贴在行的上方或下方。
如果要覆盖当前行,则必须先将其删除,这意味着下面的行代替它, 然后粘贴到新的当前行上方。
有多种方法可以做到这一点:
- 
"_ddP- 
"_dd删除”黑洞寄存器“中的整个当前行,下面的行现在是当前行。
- 
P将无名寄存器的内容放在当前行之上。
 
- 
- 
Vp- 
V将您置于VISUAL LINE模式,并可以直观地select整个当前行
- 
p用未命名的寄存器的内容replaceselect
 
- 
- 
S<Cr>"- 
S删除当前行的内容并将其置于INSERT模式
- 
<Cr>"放入未命名的寄存器的内容
 
- 
最后两个选项有一个有趣的副作用:前一行的内容被放入未命名的寄存器,这使得不可能做多个具有相同内容的粘贴。
幸运的是,你可以解决这个问题:
- 
第一个解决scheme中提到的“黑洞寄存器”工作得很好,就像一个黑洞。 不pipe你input什么,它永远消失,所以你可以继续使用 p和P,并且有一定程度的自信,从粘贴到粘贴,无名寄存器仍然是一样的。
- 
Vim让你可以访问26个字母寄存器,你可以用它来保存macros或者重复粘贴东西。 以第二种解决scheme为出发点,你首先把整行写入registry "a"ayy然后在另一行上做V"ap。
但是,所有上述假定您要粘贴的文本是一个实际的行。 Vim在“行式”和“字符式”之间做出了区别:它不会让你在一个字符的上下文或其他方式中粘贴一行。
 用yy整个行保持其行或明智的性格,并且你将不能在同一行上的两个字符之间。 为此,您需要确保您所抽取的内容不会被Vim逐行解释。 例如,我们假设你在第一行的第一个字符,并且希望把它放在lorem和sit之间的正常位置: 
 ipsum dolor lorem sit amet 
 你应该input"ayee把你的被"ayee文本注册"a ,把光标放在需要的位置并input"aP 。 
您可以使用D从当前光标位置删除到行尾,并将p删除到新的光标位置。
这是剪切和粘贴一整行使用^ D和P。
 我需要经常“注入”寄存器内容到一个特定的(字符/行/块)模式,我为它写了UnconditionalPaste插件 。 它提供gcp , glp等替代内置的粘贴命令,强制某种模式(现在在这个主题上有更多的变体,比如粘贴逗号或查询字符)。 
 有了它,你可以使用gcp / gcP在光标位置之前/之后粘贴,而不pipe你如何gcP文本。 
我不确定是否有一个。 我试图find文档,并运行以下三个文件:
- Vim命令备忘单
- Vim编辑器命令
- 掌握VI编辑器
 不幸的是,所有三个只有你列出的两个命令。 特别是,第三个链接指出, The commands to paste are p and P... 
要以插入模式粘贴,只需按Control + “ 。
 要在命令模式下粘贴,你按下P ,但是你必须确保你的线没有新的线条字符(例如被0v$hy抽出),否则它会出现在光标上方。 
对于可视模式,请参阅: 如何在垂直select块中粘贴一行? 在Vim SE
(我知道这个线程是旧的,只是离开这个,希望这可能有助于某人)
受到上面关于删除换行符的@ wbg的评论的启发,我将这些添加到了我的映射中:
 nnoremap <leader>p :let @"=substitute(@", '\n\+$', '', '')<CR>p 
 inoremap <leader>p <esc>:let @"=substitute(@", '\n\+$', '', '')<CR>pa 
当我有一个SQL的文件(一行一行),这是非常有用的,我不得不抽入代码。