【问题标题】:Smart indenting in vim (normally great) is a disaster when pasting in a chunk of code在粘贴一段代码时,vim 中的智能缩进(通常很好)是一场灾难
【发布时间】:2009-01-22 19:51:05
【问题描述】:

我猜其他编辑器足够聪明,可以关闭这些东西以进行粘贴,但是在终端中使用 vim 时,它无法区分粘贴和实际输入。

您对此有哪些解决方案或变通方法?

添加:还有一个设置可以让 cmets 在下一行自动继续。缩进至少不会改变代码的语义,但自动注释延续确实把事情搞砸了。想想看,我应该完全关闭它——有人知道那个选项叫什么吗?

【问题讨论】:

    标签: vim terminal text-editor copy-paste


    【解决方案1】:

    :set paste 是要走的路,但如果你忘记了,就像我经常做的那样,那么如果你使用 {} 作为块的打开/关闭的语言,那么在第一个 { 或最后一个 } 将重新应用缩进。

    【讨论】:

    • 这实际上适用于任何正确定义块的语言插件——例如,ruby 可以从end 执行此操作。
    【解决方案2】:

    :设置粘贴

    【讨论】:

    • :set nopaste - 重新打开缩进
    • 哦,谢谢。所以你必须记住在粘贴前后设置和取消设置?我想如果没有一种程序化的方式来区分粘贴和打字,就不可能再自动化了。
    • 您可以使用键映射将其绑定到一组键。但我从来没有试过这个。 shlomifish.org/lecture/Vim/beginners/slides/slide30.html
    • 酷,想把它纳入你的答案吗?如果你知道我在说什么,也许可以添加一些关于自动继续评论的功能。
    • @dreeves: 自动继续评论也被 :set paste 禁用了
    【解决方案3】:

    将此添加到您的 .vimrc 中,并使用 F2 键在添加代码块之前和之后切换粘贴状态:

    set pastetoggle=<F2>
    

    【讨论】:

      【解决方案4】:

      另一种方法是这样做,假设您的系统剪贴板设置正确

      "*p
      

      这将从系统剪贴板粘贴。

      检查您的vim --version。我相信在 OS X 上你需要 +clipboard 和在 Linux 上 +xterm_clipboard

      如果您使用的是 OS X,您可以随时使用 brew install macvim 并使用 mvim -v 代替捆绑的 Vim(它不是使用 +clipboard 编译的)。

      【讨论】:

      • 检查你的 vim --version。寻找 +xterm_clipboard 或 +clipboard。我使用 mvim -v。我有 -xterm_clipboard 但 +clipboard 工作正常。
      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多