从Chrome复制和粘贴时,Vim中有额外的间距

时间:2014-04-24 17:43:53

标签: vim

每当我从Chrome中复制已缩进Vim的文本时,我会得到一个级联缩进而不是一致的缩进,所以:

def fn(x):
    """Takes x as an input and returns y
    if x:
        return y

变为:

def fn(x):                                                                  
        """Takes x as an input and returns y                                
                if x:                                                       
                                return y

如何防止这种情况(首选),或者如何使用其他vim命令快速修复间距(可接受)?

额外信息

  • vim 7.4,Arch Linux上的铬34
  • 复制方法:在Chromium中突出显示(鼠标或其他),CTRL-C,切换到vim并插入模式,SHIFT-CTRL-V

1 个答案:

答案 0 :(得分:5)

使用任何终端/操作系统的默认方法(菜单,上下文菜单,快捷方式,鼠标...)进行粘贴时,文本不会粘贴:它是插入,就像您键入它一样。因为你已经启用了自动延迟,所以Vim会缩进每一行,你最终会得到那个阶梯(地狱)效果。

你有两个选择......

  1. paste/nopaste和/或pastetoggle

    您可以在粘贴前:set paste禁用自动延迟和格式化,然后再执行:set nopaste

    如果您决定采用这条路径,我建议您阅读:h pastetoggle,以使整个流程减轻负担。

  2. Vim自己的命令和剪贴板集成:

    如果你的Vim版本附带剪贴板支持,你可以使用"+p"*p从其他程序粘贴而不会产生副作用。

    大多数操作系统附带的默认Vim是一个“小”版本,可能缺少许多有用的功能。如果您打算使用Vim作为编程的主编辑器,建议安装一个带有剪贴板支持的更强大的版本。在基于Debian的系统上,最好的选择通常是“vim-gtk”或“vim-gnome”。在Arch上,我认为你必须安装“gvim”软件包。