【问题标题】:How do you paste with vim without code being commented?如何在不注释代码的情况下使用 vim 粘贴?
【发布时间】:2010-07-09 22:43:00
【问题描述】:

每次我在 vim 中粘贴时,每一行都会被注释掉。

有没有办法解决这个问题?

【问题讨论】:

    标签: vim


    【解决方案1】:

    在粘贴之前,请在正常模式下输入:

    :set paste
    

    然后进入插入模式。您将看到状态栏显示insert (paste)。粘贴您的代码。点击 ESC 返回正常模式,然后:

    :set nopaste
    

    您不再处于粘贴模式。

    【讨论】:

    • 澄清一下,“粘贴模式”会同时关闭许多自动格式化和缩进功能,这样可以安全地粘贴大块文本而不会破坏内容。
    • 不要忘记查看“pastetoggle”,这样可以更轻松地执行这些步骤。例如,我有: set pastetoggle= 这样,在我粘贴文本之前,我只需按下 键。然后当我完成时,我再次按下它。这非常方便,因为我使用 Shift- 粘贴文本
    • pastetoggle=<F2> 添加到您的.vimrc,这样您就不必每次都设置它。如前所述,如果需要,您可以将其映射到不同的键。 <Insert> 可能是理想的,因为默认情况下它会切换替换模式。哪个 IMO 是垃圾。
    • 被回答将近 9 年后,这对我有帮助。谢谢!
    【解决方案2】:

    或者,为了避免打开和关闭paste,只需输入文本。而不是进入插入模式和粘贴,在命令模式下输入:

    "+p
    

    + 缓冲区对应于系统剪贴板。

    如果您坚持使用paste,我建议您映射一些东西来切换它。例如,:set pastetoggle=<F2>(哇,没有意识到有一个特殊的选项)

    【讨论】:

    • @rampion:是的,这就是我最初提到的,但为了支持pastetoggle 而删除了它。
    • 'pastetoggle' 存在 b/c 您不能使用插入模式映射来关闭 'paste' -- 启用 'paste' 会禁用插入模式映射。
    • 这对我不起作用?是否有任何压倒一切的方法不起作用?
    • 避免剪贴板黑客安全问题也很重要:thejh.net/misc/website-terminal-copy-paste 在我的情况下:inoremap <C-R>+ <C-R><C-R>+
    • 当我运行“+p”时,什么也没有发生?
    猜你喜欢
    • 2011-12-05
    • 2018-09-03
    • 2012-03-21
    • 1970-01-01
    • 2011-06-08
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多