2023-10-09 09:00:01

在插入模式下粘贴?

是否可以在Vim中以插入模式粘贴?


当前回答

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

+对于剪贴板, *对于X剪贴板(X中最后选择的文本), 对于未命名的寄存器(Vim中的最后一次删除或yank), 或者其他一些寄存器(参见:h寄存器)。

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

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

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

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

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

其他回答

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

+对于剪贴板, *对于X剪贴板(X中最后选择的文本), 对于未命名的寄存器(Vim中的最后一次删除或yank), 或者其他一些寄存器(参见:h寄存器)。

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

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

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

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

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

只需添加地图:

" ~/.vimrc
inoremap <c-p> <c-r>*

重启vim,在插入模式下按下Crtl+p, 复制的文本将被粘贴

你可以通过以下方式进入——INSERT (past)——模式:

键盘组合:yp

or

:设置粘贴并进入插入模式(:set nopaste为disable)

一旦进入——INSERT (past)——模式,只需使用您的系统粘贴功能(例如,Linux上的CtrlShiftv, Mac OS上的Cmdv)。

当通过ssh使用vim时,这个策略非常有用。

在插入模式下按CTRL-R {register}

例子:

CTRL-R *将插入剪贴板的内容 CTRL-R”(未命名寄存器)插入最后的删除或拉取。

要在vim的帮助中找到它,键入:h i_ctrl-r

如果不希望Vim破坏传入粘贴文本的格式,可能还需要考虑使用::set paste。这将防止Vim重新标记您的代码。当粘贴完成时,:set nopaste将恢复正常行为。

你也可以用一个键来切换模式,比如在你的.vimrc中添加set pastetoggle=<F2>。关于切换自动缩进的更多细节在这里。