vim - 从 Chrome 复制和粘贴时 Vim 中的额外间距

标签 vim

这个问题在这里已经有了答案:





Pasting code into terminal window into vim on Mac OS X

(6 个回答)


7年前关闭。




每当我从 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 命令(可接受)快速修复间距?

额外信息
  • Arch Linux 上的 vim 7.4、 Chrome 34
  • 复制方法:在 Chromium 中突出显示(鼠标或其他方式),CTRL-C , 切换到 vim 和插入模式, SHIFT-CTRL-V .
  • 最佳答案

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

    你有两个选择……

  • paste/nopaste和/或 pastetoggle :

    你可以做:set paste在粘贴之前禁用自动缩进和格式设置并执行 :set nopaste之后。

    如果你决定走那条路,我建议你阅读 :h pastetoggle让整个过程少一点负担。
  • Vim 自己的命令和剪贴板集成:

    如果你的 Vim 版本支持剪贴板,你可以使用 "+p"*p从其他程序粘贴而没有副作用。

    大多数操作系统附带的默认 Vim 是一个“小”构建,可能缺少许多有用的功能。如果你打算使用 Vim 作为你的主要编程编辑器,建议安装一个带有剪贴板支持的更强大的构建。在基于 Debian 的系统上,最佳选择通常是“vim-gtk”或“vim-gnome”。在 Arch 上,我认为你必须安装“gvim”包。
  • 关于vim - 从 Chrome 复制和粘贴时 Vim 中的额外间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276118/

    相关文章:

    xml - 查看日志文件内容时正确的 XML 格式

    python - Vim Pymode 不使用实际的环境

    vim - 如何模拟:autocmd VisualLeave * or :autocmd VisualEnter * in vim?

    vim - 如果文件具有多个扩展名,则自动在 `filetype`中设置多种文件类型

    "find and replace nth occurrence"的正则表达式分割

    vim - 使用 vim 的 CLI 打开超过 10 个匹配模式的文件

    vim - Vim 中的快速字数统计功能

    vim - Vim 是否有与 gVim 不同的运行时配置文件?

    vim - MacVim 配色方案快捷键

    vim - 如何在 Vim 中删除多范围中的空行