【问题标题】:Vim inserting comments while copy pastingVim 在复制粘贴时插入注释
【发布时间】:2011-12-05 20:47:18
【问题描述】:

当我将如下所示的行复制到 Vim 时,

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1

Vim 自动将" 添加到所有行。我该如何摆脱它并保持原样粘贴?

In Vim

 66     " OmniCppComplete
 67     " let OmniCpp_NamespaceSearch = 1
 68     " let OmniCpp_GlobalScopeSearch = 1
 69     " let OmniCpp_ShowAccess = 1

【问题讨论】:

    标签: vim


    【解决方案1】:

    两个主要选项:

    • 直接从寄存器放入,无需进入插入模式,使用"+p
      • " 表示“使用以下寄存器”;
      • + 指剪贴板,而
      • p 放!

    如果你在Linux中使用中键选择粘贴,请使用*而不是+来引用它。

    • 在进入插入模式进行粘贴之前,运行:set paste。使用 :set nopaste 退出插入模式后将其关闭。

    【讨论】:

    • +1 我试图使格式更清晰一些(字面引用在我的末尾粘合在一起)
    • 只有 :set paste 部分对我有用(vim 通过来自没有 X 的 mac iTerm2 的 SSH 连接在 Ubuntu 机器上运行,因此服务器端可能没有剪贴板)。
    • 我完全不懂"+p,但是:set paste的方法很完美。
    • @Jake 不,我的意思是字面上的三个击键。您应该在前两个之后的状态行中看到"+,然后p 将粘贴。如果什么都没发生,那是因为 vim 看不到你的操作系统剪贴板。
    • K.好吧,你可以看到我不是 Vim 专家。很可能,正如你所说,我的剪贴板不可见。谢谢您的帮助。另一种方法效果很好。我还需要了解更多。 Vim 是一个如此强大的工具。
    【解决方案2】:

    当您在 UI 中使用 Vim 时,转到菜单 Terminal → 重置和清除。然后尝试粘贴您拥有的代码。

    它会按原样粘贴。

    【讨论】:

      【解决方案3】:

      在 Vim 中进入模式 :set paste。然后按 Ctrl + Shift + V。

      它会起作用的。

      不要通过编辑和粘贴来粘贴。它不会工作。

      【讨论】:

      • 我正在从 mac SSH 到远程 ubuntu。它有效,但我必须在两个命令之间输入insert mode
      • 你不应该在 Ctrl + Shift + V 之前按i 进入插入模式吗?
      【解决方案4】:

      到目前为止,每个人都没有抓住重点。当您开始新行时(无论是粘贴还是输入),Vim 会自动插入注释字段。

      您至少设置了 r 和 o 选项的格式选项。要查看您的设置,请键入

      :set formatoptions?
      

      要删除这些选项,请键入

      :set formatoptions=
      

      然后粘贴将按照您期望的方式工作。

      键入

      :help fo-table
      

      查看 formatoptions 中每个字母的含义。

      【讨论】:

      • 这应该是公认的答案。使用:set formatoptions-=ro 删除ro 后,formatoptions 显示formatoptions=croql 我可以将文本从一个腻子会话传递到vi 编辑模式。谢谢
      猜你喜欢
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2020-08-16
      • 2017-04-27
      • 2014-09-18
      相关资源
      最近更新 更多