粘贴在插入模式?
有没有可能在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
会粘贴以前抽取的项目/行。