使用大型C文件在vim中启用语法和语法折叠会使完成变慢

当我在大C文件(大约8000)行中使用语法时,完成ctrl-p和ctrl-n非常慢(超过20)。 当我关闭语法时,完成只需不到一秒钟。

我想出了一种重现这种行为的最小方法。 使用空的.vim文件夹并创建仅包含以下行的.vimrc:

set syntax on set foldmethod=syntax 

当您打开一个大型C文件时,完成(甚至一般编辑)变得非常慢。

编辑:

这种行为是由于我使用的是测试版。 我不确定是否应该完全删除这个问题,或者如果其他人有同样的问题可以留下它可以有一些线索。

我猜测你的完成正在通过语法高亮文件进行调整。 要查看是否是这种情况,并且无论如何都要精简和快速完成,请尝试

 :set complete=. 

这将使完成只使用当前文件。

阅读更多关于完整选项的信息

 :help 'complete' 

由于foldmethod=syntax Vim有时在大文件中很慢(特别是对于ins-completion)

来自:help todo:

  • 折叠和PHP语法高亮的缓慢组合。 脚本来重现它。 由“语法同步fromstart”和补丁7.2.274引起。 (Christian Brabandt,2010年5月27日)一般来说,将’foldmethod’设置为“syntax”的折叠很慢。 做剖析以找出原因。

FastFold插件使得折叠仅在保存时重新计算(因此您总是使用foldmethod=manual – 但折叠是使用foldmethod=syntax或之前设置的任何内容计算的)。

这解决了我的问题。 现在我可以在我的5000行C ++文件中使用compl-whole-line完成,它是即时且快速的,而不是花费几分钟而且没有响应。