为什么在Vim的插入模式下粘贴很长的单线程非常慢?

时间:2009-02-01 18:40:14

标签: vim paste

我的Macbook昨天被卡住了,当时我试图将1200行80个字符粘贴到Vim。下载文件要快得多,而不是粘贴文本。

我认为这个问题可能就是为什么互联网运营商允许上传速度慢于下载的原因。

9 个答案:

答案 0 :(得分:34)

如果您将其粘贴到终端窗口中,Vim会认为您正在手动输入,并且会尝试随时更新显示。您可以使用pbpastepbcopy命令访问剪贴板(在OS X上),这样您就可以在Vim中执行此操作:

:read !pbpaste

或在shell中:

bash$ pbpaste | vim -

如果您使用的是GUI Vim,则可以使用"*寄存器进行粘贴(这是上下文菜单的功能):

"*P   <- in normal mode

粘贴到终端窗口通常是一个坏主意,尽量使用pbpaste

答案 1 :(得分:17)

:read !pbpaste

如果您使用的是Linux:

xsel --clipboard --output

或:

xclip -selection clipboard -o

而不是pbpaste。

答案 2 :(得分:6)

那是“正常的”。它很慢,因为重新绘制文本数千次是很慢的。

当您粘贴长线时,它会不断更新显示(因为vim如何处理文本,或者终端如何处理文本文本,我猜)。

我尝试在vim中粘贴文本(使用iTerm)并且它有同样的问题,需要一段时间才能粘贴。我尝试了:set paste:set nowrap但仍然很慢。将线路直接粘贴到终端同样缓慢

使用您提到的dpaste链接,有一个纯文本链接,您只需要进行编辑和编辑:

curl http://dpaste.com/115362/plain/ | vim -

答案 3 :(得分:3)

我喜欢像Masi建议的那样设置粘贴/ nopaste。 在.vimrc中,您可以将某些字符映射到切换粘贴(如果经常需要)。

即。

set pastetoggle=§

答案 4 :(得分:2)

你尝试过粘贴模式吗?设置粘贴/设置nopaste?

答案 5 :(得分:2)

如果您:语法关闭,您有时可以改进长单行文件的就位粘贴。一个例子是机器生成的xml文件。

你也可以在粘贴时禁用vim的重绘,看看:他重绘,但总是值得使用命令行的东西,如果你重复这个过程或者类似的话,你总是可以用脚本/ vim宏自动化它

答案 6 :(得分:1)

我不知道这是Mac问题还是其他什么问题,但是我在Vim中粘贴了大量文本没有任何问题。我试过Windows和Linux,并没有看到任何问题。

我已经在Vim中成功编辑了几百兆(日志文件)的文件(加载速度很慢,但是一旦文本被读取,一切都非常活泼)。

答案 7 :(得分:1)

但如果它在网上,你应该尝试过:

:e http://link/to/file 

然后,如果需要,将其保存为本地文件。

如果由于重绘而速度很慢,请查看此选项:

            *'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'*
'lazyredraw' 'lz'   boolean (default off)
            global
            {not in Vi}
    When this option is set, the screen will not be redrawn while
    executing macros, registers and other commands that have not been
    typed.  Also, updating the window title is postponed.  To force an
    update use |:redraw|.

如果它是本地文件,则无需粘贴:尝试

:read file 

代替。

答案 8 :(得分:0)

如果您使用Apple终端,请尝试其他终端,例如iTerm。 有时,“内置”终端对于常见任务并不是真正的反应。不知道为什么......