Vim宏很慢

car*_*sdc 14 vim text

我将一个非常简单的vim宏保存到一个键:qa $ pjq然后用40000 @ a执行40000次.这很慢.我一定做错了,因为虽然它确实有效,但需要60-90秒.这和vim一样快吗?是否有一些设置可以加速这个?是否存在使宏执行变慢的插件混合?

我正在使用Mac并使用MacVim.它是一个纯文本文件,它实际上没有比这更简单.

Her*_*itz 23

粘贴40,000行并不需要很长时间,但如果你不断更新屏幕,就像你经常在宏中那样减慢了速度.

首先,关于你的宏应该做什么的问题.如果它只是粘贴默认寄存器的内容,那么正确的宏定义就是qapjq.无需将光标定位在前一行的特定位置.[编辑:抱歉,我假设你正在进行行式粘贴,如果你在行尾贴上字符顺序注册,则需要定位....]

其次,您可以通过设置lazyredraw(:set lazyredraw)来加速当前的宏,因此屏幕不会随着更新而更新.可能不会把事情加速很多,像这样的键盘宏不像是直接处理缓冲区.

第三,这是另一种方法,需要大约一秒钟: .,+40000g/.*/normal! $p


Don*_*eba 8

这个是正常的.正如Herbert Sitz所写,更新屏幕的速度很慢.

您可能只想运行替换命令::.,+40000s/.*/&<c-r>".

  • .,+40000 是包括当前行和40000以下的范围
  • .* 在模式中匹配整行
  • & 在字符串中是匹配的行
  • <c-r>" 粘贴未命名寄存器的内容


Han*_*mpf 5

我建议使用'vim -u NONE'启动一个空白vim。通常插件会减慢速度。你会发现它以这种方式工作得更快。然后您需要找出导致这种减速的插件。另请参阅如何查看哪些插件使 Vim 变慢?