【问题标题】:Extra spacing in Vim when copying and pasting from Chrome [duplicate]从 Chrome 复制和粘贴时 Vim 中的额外间距 [重复]
【发布时间】:2014-06-10 03:56:50
【问题描述】:

每当我从 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 上的 chromium 34
  • 复制方法:在 Chromium 中突出显示(鼠标或其他方式),CTRL-C,切换到 vim 和插入模式,SHIFT-CTRL-V

【问题讨论】:

  • 忽略它说 Mac OS X 的事实。解决方案是一样的。
  • 歌曲保持不变。
  • @FDinoff 谢谢你,我永远不会在搜索中找到它。

标签: vim


【解决方案1】:

当您使用任何终端/操作系统的默认方法(菜单、上下文菜单、快捷方式、鼠标……)粘贴时,文本不会被粘贴:它是插入,就像您键入它一样。因为你启用了自动缩进,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”包。

【讨论】:

  • 酷!我实际上已经有了gvim 包,所以"+p 有效。不过真的很尴尬的组合键。我也会调查pastetoggle。不知道paste 模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 2012-07-08
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多