首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法突出显示在Vim中造成严重滞后

语法突出显示在Vim中造成严重滞后
EN

Stack Overflow用户
提问于 2013-09-26 13:56:06
回答 12查看 28.5K关注 0票数 67

我爱维姆。但这让我现在很艰难。

我使用了很多插件,在过去的6个月里,我发现了很多很棒的插件。但我的Vim也变得很迟钝。我经常做清理,但没有多大帮助。

我已经到了维姆完全无法使用的地步。感觉它以每秒2-5帧的速度呈现,切换制表符/缓冲区需要大约1秒钟,用hjkl滚动非常糟糕,滞后太差了,即使在插入模式下输入一个句子也会让人困惑(因为滞后)。

编辑:实际上,当我打开Vim的新实例时,它是OK-ish,但在15分钟内它就无法使用了。

我刚刚花了4个小时试图找出是哪个插件或配置造成了痛苦。我没成功。

然而,我确实发现,删除这个设置会导致所有的延迟消失:syntax on

这3行与语法相结合,使一切变得更加糟糕。

代码语言:javascript
复制
set t_Co=256
set background=dark
colorscheme candyman

有意思的。那么,语法高亮正在使Vim从超级快变到令人难以置信的迟钝?

我尝试在“干净”模式下启用语法:vim -u NONE

这也不是问题所在。

因此,问题似乎是语法突出结合了我的一个或多个插件。我试过禁用邦奇,没有运气。

有没有办法做侧写?我对手工测试感到很疲惫。

有没有人有过类似的经历?或许可以快速浏览一下我的.vimrc,看看是否有什么东西让人耳目一新。https://bitbucket.org/furion/dotfiles

解决方案:造成混乱的插件是:

代码语言:javascript
复制
Bundle "gorodinskiy/vim-coloresque.git"

我建议阅读答案-好的见解。

编辑(1个月后):古龙色插件有了一些改进。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2013-09-26 14:38:49

你有autocmd垃圾邮件。在重新添加autocmd之前,应将所有autocmd语句分组包装,以清除该组。看起来你的.vimrc有最多的自动the注释,所以可能有一个插件导致了这个问题。检查此命令的输出:

代码语言:javascript
复制
:au CursorMoved

如果那里有一堆重复的处理程序,那就是你的问题。

下面是一个来自我的.vimrc的自动Here纪律的示例

代码语言:javascript
复制
augroup vimrc_autocmd
  autocmd!
  "toggle quickfix window
  autocmd BufReadPost quickfix map <buffer> <leader>qq :cclose<cr>|map <buffer> <c-p> <up>|map <buffer> <c-n> <down>

  autocmd FileType unite call s:unite_settings()
  " obliterate unite buffers (marks especially).
  autocmd BufLeave \[unite\]* if "nofile" ==# &buftype | setlocal bufhidden=wipe | endif

  " Jump to the last position when reopening a file
  autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif

  " ...etc...

augroup END

在重新添加自动case之前,位于autocmd!块开头的augroup清除当前组(在本例中为vimrc_autocmd)。

票数 31
EN

Stack Overflow用户

发布于 2013-12-11 12:44:49

编辑:博客关于这一切是如何工作的,截图和令人敬畏的沙司。

https://eduncan911.com/software/fix-slow-scrolling-in-vim-and-neovim.html

原来的答案如下..。

代码语言:javascript
复制
:syntime on

在你的红宝石档案里走动,然后

代码语言:javascript
复制
:syntime report

它报告了以下最慢的匹配为我,你可以看到,甚至没有一个匹配。

我在rubyPredefinedConstant文件中禁用了ruby.vim并解决了问题。Vim regex引擎不喜欢ruby语法中突出显示regex的内容。您必须在足够高的语法和良好的性能之间找到平衡。

希望这会有所帮助,以下是最慢的3种语法,突出显示我在MacOS10.8.5、自制Vim7.4(控制台vim)上报告的红宝石正则表达式。

代码语言:javascript
复制
    TOTAL      COUNT  MATCH   SLOWEST     AVERAGE   NAME               PATTERN
  3.498505   12494  0       0.008359    0.000280  rubyPredefinedConstant \%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!
  2.948513   12494  0       0.006798    0.000236  rubyPredefinedConstant \%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!
  2.438253   12494  0       0.005346    0.000195  rubyPredefinedConstant \%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\)\>\%(\s*(\)\@!

或者,您可以像Dojosto指出的那样尝试vim-ruby

票数 100
EN

Stack Overflow用户

发布于 2014-08-13 00:50:29

另一个堆栈溢出问题中,我通过在.vimrc文件中添加以下行来快速获得vim:

set re=1

这将迫使vim使用较旧版本的regex引擎,实际上它对ruby来说更快。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19030290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档