当我尝试在 vim 中复制粘贴此文本时,它会将一半放在命令行中,一半放在文本编辑器主窗口中
这是文本
sub(/;;/," ",$0)
我怎样才能复制粘贴
当您在控制台 Vim(不是 GVIM)中粘贴时,Vim 无法检测到您粘贴的内容是您输入的还是实际粘贴的。因此,任何(插入模式)映射都将适用。您可能有一个;;
离开插入模式的映射(也许?),并且在粘贴期间触发,造成严重破坏。
有两种方法可以防止这种情况:
"*p
通过(活动选择)或(系统剪贴板)以正常模式粘贴"+p
,前提是 Vim 能够与它们交互。
或者,设置'pastetoggle'
选项,例如
:set pastetoggle=<F2>
然后F2在粘贴之前按 (in insert mode) (注意模式如何更改为-- INSERT (paste) --
,然后再按一次。这样,你明确告诉 Vim “下一个字符不是我输入的,按字面意思对待它们”。
如果这种手动管理对您来说太麻烦,您也可以使用图形 GVIM。
我不确定你是用哪种方式复制和粘贴(即从 Xorg 窗口(如 gnome-terminal)到 vim,反之亦然)。假设您想从 Xorg 窗口复制并粘贴到您的 vim 窗口中。有几种方法可以做到:
"*p
。鼠标选中的文本被放置在*
寄存器中。Copy
,然后在 vimx 窗口中点击"+p
粘贴。在这种情况下,因为您使用右键单击菜单项进行复制,所以文本被放置在+
寄存器中。上面的第 2 和第 3 项在使用 gvim 时也有效。
您可以做的是确保您处于插入模式并在键盘上使用 ctrl+v 复制代码片段,然后左键单击 vim 窗口以使其重新聚焦,然后点击右键单击一次,您的文本应该会粘贴我刚刚测试了这个以确保它至少可以在 CentOS 6.3 上运行。
在 vim 中,您有模式,要输入文本,您必须处于插入模式。在粘贴文本之前按i
(在当前字符之前)或(在当前字符之后)。a
如果您不进入插入模式,第一个字符s
将擦除当前字符并进入插入模式放入ub(/;;/," ",$0)
您的文件。
按ESC
退出插入模式。
此外,如果您碰巧有一个共享剪贴板,您的 GUI 按下p
将粘贴。
要set clipboard=unnamed
在~/.vimrc
文件中插入 OSX 上的共享剪贴板。