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

标签 c vim

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

我找到了重现此行为的最小方法。使用一个空的 .vim 文件夹并创建一个仅包含这些行的 .vimrc:

set syntax on
set foldmethod=syntax

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

编辑:

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

最佳答案

由于 foldmethod=syntax

,Vim 在大文件中有时会很慢(尤其是 ins-completion)

来自:帮助待办事项:

  • Slow combination of folding and PHP syntax highlighting. Script to reproduce it. Caused by "syntax sync fromstart" in combination with patch 7.2.274. (Christian Brabandt, 2010 May 27) Generally, folding with 'foldmethod' set to "syntax" is slow. Do profiling to find out why.

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

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

关于c - 在具有大型 C 文件的 vim 中启用语法和语法折叠会使完成变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916887/

相关文章:

c++ - C++ 结构中私有(private)和 protected 可用性

c++ - vim在现有或新标签页打开编译报错

VIM 7 : How to navigate the code source tree from the root of the code base, 以有效的方式?

vim - 如何在没有换行符的情况下在寄存器中捕获 vim 命令的输出?

c - 结构不打印在新文件上

c - SSE 字节和半字交换

c - 用 C 语言导入和操作 .csv 文件

c - 欧拉项目'8 : solution works for example but can't find answer

vim - 如何绑定(bind)键映射以将选定的文本保存到 vim 中的文件?

在 vim 中执行的 Python 随机数列表