【问题标题】:copy and paste in vivi复制粘贴
【发布时间】:2012-08-31 04:13:57
【问题描述】:

我没有大量使用 VI 的经验。我在 Mac OSX 上运行它。

我之前在编辑器中使用复制和粘贴文本(当我在下面说 gui 时,我指的是 Mac OSX gui)

  1. 在 VI 中使用 command C 或 gui 或 yy 命令突出显示和复制 i。
  2. 进入我要粘贴文本的插入模式,然后使用 command V 或 gui 进行粘贴

我的问题是,当通过任何方法复制和粘贴时,在终端中拆分为多行的很长的行变成了终端上显示的多行。

如何让它按原样复制和粘贴?

【问题讨论】:

标签: bash vim terminal ide vi


【解决方案1】:

在尝试了此处和其他答案中建议的所有内容之后,包括尝试使用 vi(m) 命令和 seds 格式化文件之后,我变得聪明了,只是将我想要粘贴的内容重定向到文件中。即

cat << EOF > yourfile.txt
paste what you are trying to paste
another line of pasted text
yet another
foo > bar?
foo = bar??
end of the file(yay)
EOF

第一行和最后一行之间的所有内容都将粘贴到您的文件中,而不会将那些讨厌的换行符解释为许多空格/制表符。请注意,您粘贴的内容可能有自己的heredoc(就像我的一样,巧合的是LOL)。在这种情况下,您需要手动将这些行粘贴到您的编辑器中,这应该不是问题。

【讨论】:

    【解决方案2】:

    有人向我展示了一个巧妙的技巧。在 vi 编辑器中,设置为插入模式 ("i")。然后在要插入的位置中键单击。

    【讨论】:

      【解决方案3】:
      1. 将光标移动到要从其中复制内容并粘贴到其他位置的行。
      2. 在按下模式下按住 v 键,然后根据需要或直到要复制的行按上下箭头键。您可以按 V 键选择整行。
      3. 按 d 剪切或按 y 复制。
      4. 将光标移到要粘贴的位置。
      5. 按 p 将内容粘贴到光标后或按 P 粘贴到光标前。

      【讨论】:

        【解决方案4】:

        好吧,如果它实际上是一条长线,最简单的方法是在命令模式下使用“Y”。只需移动到该行并执行 Y,然后移动到您要放置该行的位置并执行 p(用于粘贴)。

        【讨论】:

        • OP 没有询问如何进行简单的复制/粘贴;重新检查问题。
        【解决方案5】:

        假设你的vi实际上是vim,在粘贴之前,做:

        :set paste
        

        这会禁用自动换行和自动缩进以及所有修改键入文本的类似功能。粘贴后,再次关闭它

        :set nopaste
        

        原因是gvim 可以区分粘贴和输入(所以在使用 gvim 时不需要这个),终端版本不能,因为它是终端进行复制和paste 和 vim 只是将文本视为键入的文本。因此像对任何其他文本一样应用转换。

        【讨论】:

          【解决方案6】:

          你有

           :set paste
          

          将 Vim 置于粘贴模式。如果您想剪切或复制,这很有用 来自一个窗口的一些文本并将其粘贴到 Vim 中。这将避免 意想不到的效果。 在终端中使用 Vim 时设置此选项很有用,其中 Vim 无法区分键入的文本和粘贴的文本。

          【讨论】:

            猜你喜欢
            • 2010-11-05
            • 2015-08-27
            • 1970-01-01
            • 1970-01-01
            • 2013-11-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-10
            • 1970-01-01
            相关资源
            最近更新 更多