16

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

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

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

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

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

4

6 回答 6

20
  1. 将光标移动到要从其中复制内容并将其粘贴到其他位置的行。
  2. 在按下模式下按住 v 键,并根据需要或最多将要复制的行按上箭头键或下箭头键。您可以按 V 键选择整行。
  3. 按 d 剪切或按 y 复制。
  4. 将光标移动到要粘贴的位置。
  5. 按 p 将内容粘贴到光标后或按 P 粘贴到光标前。
于 2015-03-13T14:31:25.827 回答
11

你有

 :set paste

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

于 2012-09-06T10:55:13.390 回答
7

假设您的 vi 实际上是vim,在粘贴之前,请执行以下操作:

:set paste

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

:set nopaste

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

于 2012-09-06T10:53:58.330 回答
2

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

于 2015-04-15T15:50:39.790 回答
0

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

于 2013-02-26T18:49:17.760 回答
0

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

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)。在这种情况下,需要手动将这些行粘贴到您的编辑器中,这应该不是问题。

于 2021-02-23T05:13:14.103 回答