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

时间:2010-05-26 21:16:54

标签: c vim

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

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

set syntax on
set foldmethod=syntax

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

编辑:

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

2 个答案:

答案 0 :(得分:3)

由于foldmethod=syntax

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

来自:help todo:

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

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

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

答案 1 :(得分:2)

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

:set complete=.

将使完成仅使用当前文件。

了解有关

的完整选项的更多信息
:help 'complete'