粘贴在插入模式?

有没有可能在vim中以插入模式粘贴?

在插入模式下击中CTRL-R {register} 。 例如, CTRL-R *将插入到剪贴板的内容中,并且CTRL-R " (未命名的寄存器)插入最后的删除或抽出。

在vim的帮助types中find这个:h i_ctrl-r

如果你不希望Vim在传入的粘贴文本中改变格式,你也可以考虑使用:set paste这会阻止vim重新标记你的代码。 当完成粘贴时, :set nopaste将返回到正常行为。

也可以用一个按键来切换模式,在你的.vimrc文件中添加一些东西,如set pastetoggle=<F2> 。 有关在此处切换自动缩进的更多详细信息。

不,不直接。 你可以做的是通过Ctrl-O快速退出插入模式进行单一的正常模式操作,然后从那里粘贴,这将最终返回到插入模式。

组合键: Ctrl-O

编辑:有趣。 似乎有其他几个人列出的方法。

在插入模式下,您可以使用Ctrl-R {register} ,其中寄存器可以是:

  • +为剪贴板,
  • *为X剪贴板(X中最后选定的文字),
  • "对于未命名的寄存器(Vim中的最后删除或抽出),
  • 或者其他一些(见:h registers )。

Ctrl-R {register}插入文本,就像input文本一样。

Ctrl-R Ctrl-O {register}插入带有原始缩进的文本。

Ctrl-R Ctrl-P {register}插入文本并自动缩进它。

因此,在返回到插入模式之前,可以使用Ctrl-O来运行任何正常模式命令
例如,也可以使用Ctrl-O "+p

有关更多信息,请查看文档:h i_ctrl-r

你可以使用这个很好地从剪贴板粘贴Ctrl v

 set pastetoggle=<F10> inoremap <Cv> <F10><Cr>+<F10> 

而这个用Ctrl c键入剪贴板的视觉select:

 vnoremap <Cc> "+y 

如果你还想在普通模式下默认使用剪贴板进行传统的vim yanking / pasteing( y / p ),下面是一个configuration选项:

 set clipboard=unnamedplus 

有了这个configuration,你可以例如在正常模式下先抽出,然后在插入模式下使用Ctrl v粘贴。 另外,你可以粘贴来自不同vim实例和不同应用程序的文本,而不用麻烦。

从定制寄存器粘贴你可以按照其他的答案:)。

如果您将vim设置为使用系统剪贴板( :set clipboard=unnamed ),则可以使用Shift+Insert粘贴您在vim中复制的任何文本。 Shift + Insert只是一个OS范围的粘贴键组合(Ctrl + insert是对应的“复制”)

您也可以使用鼠标中键在插入模式下粘贴(仅适用于Linux)。

您可以通过以下方式input-- INSERT (past) --模式:

  • 键盘组合键: y p

要么

  • :set paste并进入插入模式( :set nopaste禁用)

一旦进入-- INSERT (past) --模式只需使用您的系统粘贴function(例如,在Linux上的Ctrl Shift v ,在Mac OS上的Cmd v )。

这个策略在使用vim over ssh时非常有用。

是。 在Windows Ctrl + V和Linux中几乎同时按下两个鼠标button。

在Windows中,我认为这行在我的_vimrc可能做到这一点:

 source $VIMRUNTIME/mswin.vim 

在Linux中,我不记得我是如何做到的。 它看起来像我可能从默认的.vimrc文件中删除了一些行。

在插入模式下粘贴

自定义地图在这种情况下似乎是适当的。 这是我用来在插入模式下粘贴抽取的项目:

 inoremap <Leader>p <ESC>pa 

我的Leader钥匙在这里是\ ; 这意味着在插入模式下按\p会粘贴以前抽取的项目/行。