我没有使用VI的丰富经验。我在Mac OSX上运行它。
我之前在编辑器中复制并粘贴了文本(当我在下面说gui时我指的是Mac OSX gui)
command C
或VI中的gui或yy
命令突出显示和复制i的光标。command V
或gui 我的问题是,当通过任何方法复制和粘贴时,终端中多行分割的很长的行会变成多行,如终端上所示。
如何让它按原样复制和粘贴?
答案 0 :(得分:8)
你有
:set paste
将Vim置于粘贴模式。如果要剪切或复制,这非常有用 一个窗口中的一些文本并将其粘贴到Vim中。这样可以避免 意外的影响。 在Vim的终端中使用Vim时,设置此选项很有用 无法区分键入的文本和粘贴的文本。
答案 1 :(得分:8)
答案 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(用于粘贴)。