粘贴在插入模式?

时间:2010-05-18 22:32:59

标签: vim

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

11 个答案:

答案 0 :(得分:412)

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

示例:

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

要在vim的帮助中找到这个,请输入:h i_ctrl-r

答案 1 :(得分:218)

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

也可以通过向.vimrc添加类似set pastetoggle=<F2>的内容,使用单个键切换模式。有关切换自动缩进的更多详细信息为here

答案 2 :(得分:117)

不是没有直接。你可以做的是使用 Ctrl-O 进行单一正常模式操作的快速退出插入模式,然后从那里粘贴将结束让你回到插入模式。

Key Combo: Ctrl-O p

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

答案 3 :(得分:26)

您可以使用此选项从剪贴板粘贴 Ctrl v

set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>

这是用 Ctrl c 将视觉选择拖入剪贴板:

vnoremap <C-c> "+y

如果您还希望在正常模式下默认使用剪贴板进行经典vim yanking /粘贴( y / p ),这里有一个配置选项:

set clipboard=unnamedplus

使用此配置,您可以例如首先在正常模式下猛拉,然后在插入模式下使用 Ctrl v 进行粘贴。此外,您可以粘贴来自不同vim实例和不同应用程序的文本。

另一种选择是:

set clipboard=unnamed

然后,您可以通过在X环境中拖动鼠标来选择某些内容,然后将其粘贴到vim中。但是(出于某种原因)你不能在Vim中抽出一些东西( y )而 shift 在其他地方插入 ,这可能是非常有限的。

Vim关于此的文档:http://vim.wikia.com/wiki/Accessing_the_system_clipboard

对于从自定义寄存器粘贴,您可以按照其他答案:)。这个答案主要是关于将Vim与系统剪贴板集成。


请注意,要使set clipboard=unnamedplusset clipboard=unnamed生效,您需要使用gvim或vimx(vim-X11):这些是使用+xterm_clipboard编译的。您可以选择将此.bashrc添加到vim vimx if [ -e /usr/bin/vimx ]; then alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard fi

+xterm_clipboard

您可以在vim --version提供的信息中找出您的vim是否包含{{1}}。

答案 4 :(得分:26)

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

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

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

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

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

在返回插入模式之前,

Ctrl-O可用于运行任何正常模式命令,因此例如也可以使用Ctrl-O "+p

有关详细信息,请查看包含:h i_ctrl-r

的文档

答案 5 :(得分:19)

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

答案 6 :(得分:18)

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

答案 7 :(得分:5)

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

  • 键盘组合: y p

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

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

当使用vim over ssh时,此策略非常有用。

答案 8 :(得分:4)

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

在Windows中我认为我的_vimrc中的这一行可能会这样做:

source $VIMRUNTIME/mswin.vim

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

答案 9 :(得分:0)

粘贴在插入模式

在这种情况下,自定义地图似乎是合适的。这就是我用来在插入模式下粘贴被拽物品的方法:

inoremap <Leader>p <ESC>pa

我的Leader密钥是\;这意味着在插入模式下点击\p将粘贴先前被拉动的项目/行。

答案 10 :(得分:0)

只需添加地图:

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

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