4

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

这是文本

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

我怎样才能复制粘贴

4

4 回答 4

6

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

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

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

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

:set pastetoggle=<F2>

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

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

于 2013-01-15T02:46:31.970 回答
1

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

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

上面的第 2 和第 3 项在使用 gvim 时也有效。

于 2013-01-15T03:03:17.813 回答
0

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

于 2013-01-15T02:33:29.617 回答
0

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

如果您不进入插入模式,第一个字符s将擦除当前字符并进入插入模式放入ub(/;;/," ",$0)您的文件。

ESC退出插入模式。

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

set clipboard=unnamed~/.vimrc文件中插入 OSX 上的共享剪贴板。

于 2013-01-15T02:37:45.293 回答