我在MacVim 7.4(我使用命令行版本)上,通过Homebrew安装。
当语法突出显示Ruby代码时,Vim很慢。在vim中移动Ruby文件时,htop
显示80%-100%的CPU使用率。
我在SO上找到了这些:
并尝试了提出的解决方案。我做了什么:
set regexpengine=1
:没有任何改变。 CPU使用率仍然很高,性能也很慢。set lazyredraw
:事情变得更好,但权衡非常明显(光标在移动时消失)autocmd
中的.vimrc
语句,发现没什么特别慢的。我尝试删除所有插件,但问题仍然存在。我尝试关闭语法,好吧,它解决了问题。另外,使用vim -u NONE
启动vim,然后转动syntax on
可以解决问题,所以我的.vimrc
中必定会出现这种情况?
Here是指向vimrc
的链接。
我可能已经找到了有罪的设置。似乎有两个设置明显减慢了vim中的移动速度:
set relativenumber
set cursorline
请注意,这两个设置都会触发此行为。
当滚动按住j
或k
时,这些设置会强制vim重绘屏幕上的大量内容。
我怀疑这里有一个解决方案,但我对任何事情都持开放态度。
请注意,relativenumber
和cursorline
仅在Ruby文件中使用时才会触发此行为。无论多长时间,我尝试过的所有其他文件类型(relativenumber
和cursorline
都会顺利滚动)。
答案 0 :(得分:2)
正如avivr所说,由于foldmethod=syntax
来自:help todo:
- 折叠和PHP语法高亮的缓慢组合。脚本来 重现它。由"语法同步引发启动"与补丁相结合 7.2.274。 (Christian Brabandt,2010年5月27日)一般来说,折叠 '使用foldmethod'设置为"语法"是慢的。做剖析以找出原因。
FastFold plugin使得折叠仅在保存时重新计算(因此您始终使用foldmethod=manual
- 但折叠是使用foldmethod=syntax
或您设置的任何内容计算的前)。
这解决了我的问题。现在我可以在我的5000系列C ++文件中使用compl-whole-line完成功能,它可以即时而快速,而不是花费几分钟而且没有响应。
答案 1 :(得分:0)
众所周知,Ruby语法文件速度慢,禁用“光标线”,“光标列”和“#39;因为它们会产生最大的影响。
但是你也应该看看Vim slow with ruby syntax highlighting。可能有助于改善事物的东西。
答案 2 :(得分:0)
我遇到了这个问题,还试过set regexpengine=1
和其他各种事情。
对我而言,根据正在编辑的文件的大小/复杂程度,似乎缓慢程度或多或少都很严重,但需要一段时间才能确定原因。
在我的情况下,罪魁祸首是以下设置:
autocmd Filetype ruby setlocal foldmethod=syntax
此设置告诉Vim根据语法元素(类,函数,条件)自动创建折叠。 在这种情况下,我认为在autocmd中设置它并不重要。 我认为问题在于,对于相当复杂的文件,折叠在编辑过程中被更新,导致复杂文件的速度显着降低。
希望这有助于某人。