ruby - (Mac) 当语法设置为 Ruby 时 Vim 相当慢

标签 ruby macos vim

我在 MacVim 7.4(我使用命令行版本)上,通过 Homebrew 安装。

Vim 在语法高亮 Ruby 代码时很慢。 htop 在 vi​​m 中移动 Ruby 文件时显示 80%-100% 的 CPU 使用率。

我在 SO 上找到了这些:

并尝试了建议的解决方案。我做了什么:

  • set regexpengine=1:没有任何改变。 CPU 使用率仍然很高,性能很慢。
  • 设置 lazyredraw:事情变得更好,但权衡非常明显(光标在移动时消失)
  • 我检查了 .vimrc 中的 autocmd 语句,没有发现特别慢的地方。我尝试删除所有插件,但问题仍然存在。

我尝试关闭语法,好吧,它解决了问题。另外,用 vim -u NONE 启动 vim 然后打开 syntax on 解决了这个问题,所以它一定是我的 .vimrc 我猜?

Here是指向我的 vimrc 的链接。

编辑

我可能已经找到了有罪的设置。似乎有两个设置明显减慢了 vim 中的移动速度:

  • 设置相对数
  • 设置光标线

请注意,这两个设置甚至单独触发此行为。

这些设置强制 vim 在按住 jk 滚动时在屏幕上重绘很多东西。 我怀疑这里是否有解决方案,但我对任何可以加快解决速度的事情都持开放态度。

编辑#2

请注意,relativenumbercursorline 只有在 Ruby 文件中使用时才会触发此行为。我尝试过的所有其他文件类型(启用 relativenumbercursorline)无论多长时间都可以顺利滚动。

最佳答案

正如 avivr 所说,由于 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 迟钝。

关于ruby - (Mac) 当语法设置为 Ruby 时 Vim 相当慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949067/

相关文章:

objective-c - 将 SYMBOL 与我的应用程序集成?

vim:将字符或单词传递给您的函数

windows - Powershell 中的 vimdiff E97

ruby - 在设备登录时取消删除 acts_as_paranoid 已删除的用户

ruby - 如何通过 SSH 连接到服务器,然后从那里通过 SFTP 连接到另一台服务器?

macos - 如何在 MacOS Catalina 上安装 X11 版本的 Emacs?

javascript - vim 识别为 javascript

ruby - 没有将 String 隐式转换为 Integer (TypeError) 为什么会这样?

mysql - rails : Cannot connect to remote MySQL database

linux - 通过 ssh (linux/osx) 运行作业