为什么我不能在Vim中复制粘贴这个文本?

时间:2013-01-15 02:26:36

标签: linux vim

当我尝试在vim中复制粘贴此文本时,它将一半放在命令行中,一半放在文本编辑器主窗口中

这是文字

sub(/;;/," ",$0)

如何复制粘贴

4 个答案:

答案 0 :(得分:5)

当您粘贴到控制台Vim(而不是GVIM)时,Vim无法检测您粘贴的内容是由您键入还是实际粘贴。因此,将应用任何(插入模式)映射。您可能有一个映射(可​​能;;?)离开插入模式,并且在粘贴期间触发,造成严重破坏。

有两种方法可以防止这种情况:

通过"*p(主动选择)或"+p(系统剪贴板)粘贴到正常模式,前提是Vim能够与它们进行交互。

或者,设置'pastetoggle'选项,例如

:set pastetoggle=<F2>

然后在粘贴之前按 F2 (在插入模式下)(注意模式如何更改为-- INSERT (paste) --,然后再次显示。这样,你明确告诉Vim“下一个字符不是我输入的,按字面意思对待它们。“

如果这种手动管理对您来说太麻烦,您可以选择使用图形化GVIM。

答案 1 :(得分:1)

我不确定你复制和粘贴的方式(即从Xorg窗口(如gnome-terminal)到vim,反之亦然)。假设您要将Xorg窗口复制并粘贴到vim窗口中。有几种方法可以做到:

  1. 使用鼠标选择要复制的文本,将vim置于插入模式,然后按鼠标中键。
  2. 如果您在控制台中使用带有X支持的vim(通常通过键入vimx启动),则可以使用鼠标选择要复制的文本,然后在vimx窗口中按"*p。鼠标选择的文本放在*寄存器中。
  3. 如果您在控制台中使用带有X支持的vim(通过键入vimx启动),则可以使用鼠标选择要复制的文本,右键单击鼠标,选择菜单项Copy,然后在vimx中窗口点击"+p进行粘贴。在这种情况下,因为您使用右键单击菜单项进行复制,所以文本放在+寄存器中。
  4. 上面的第2和第3项在使用gvim时也有效。

答案 2 :(得分:0)

您可以做的是确保您处于插入模式并使用键盘上的ctrl + v复制代码段,然后左键单击vim窗口使其重新聚焦,然后点击右键一次,然后点按文本应该粘贴。我只是测试了这一点,以确保它至少在CentOS 6.3上工作。

答案 3 :(得分:0)

在vim中你有模式,输入你必须处于插入模式的文本。在粘贴文本之前,请按i(在当前字符之前)或a(在当前字符之后)。

如果你没有进入插入模式,第一个字符s将删除当前字符并进入插入模式,将ub(/;;/," ",$0)放在你的文件上。

ESC退出插入模式。

此外,如果您碰巧有一个带有GUI的共享剪贴板,按p将会粘贴。

要在OSX上拥有共享剪贴板,请在set clipboard=unnamed文件中插入~/.vimrc