复制并粘贴在vi中

时间:2012-09-06 10:50:24

标签: vi

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

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

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

    我的问题是,当通过任何方法复制和粘贴时,终端中多行分割的很长的行会变成多行,如终端上所示。

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

6 个答案:

答案 0 :(得分:8)

你有

 :set paste

将Vim置于粘贴模式。如果要剪切或复制,这非常有用     一个窗口中的一些文本并将其粘贴到Vim中。这样可以避免     意外的影响。     在Vim的终端中使用Vim时,设置此选项很有用     无法区分键入的文本和粘贴的文本。

答案 1 :(得分:8)

  1. 将光标移动到要复制的行并将内容粘贴到其他位置。
  2. 按下按键v并按下上下箭头键或最多可以复制的行。您可以按键V选择整行。
  3. 按d剪切或复制。
  4. 将光标移动到要粘贴的位置。
  5. 按p键将光标后的内容粘贴,或按P键粘贴光标前。

答案 2 :(得分:5)

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

:set paste

禁用自动换行和自动缩进以及修改键入文本的所有类似内容。粘贴后,再次使用

将其关闭
:set nopaste

原因是虽然gvim可以告诉键入输入(因此在使用gvim时你不需要这样做),终端版本不能,因为它是终端做的复制和粘贴和vim只是将文本视为键入。因此,像对任何其他文本一样应用转换。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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(就像我的巧合一样,哈哈)。在这种情况下,需要在编辑器中手动粘贴这些行,这应该不是问题。

答案 5 :(得分:-1)

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