多个游标包使emacs运行缓慢


9

我在html文件中使用了软件包Multiple Cursors,它对一些游标来说很棒,但是如果我创建30或50个以上的游标,它将变得非常慢,仅移动游标就需要5到6秒钟。
我使用的是错误的还是仅仅是没有准备好创建那么多的游标?


2
这取决于缓冲区中发生的事情-对于Magnar的多光标而言,某些缓冲区更加困难。有时候我可以有几百个没有明显的减速,有时候(比如说wdired-mode)只有几个会导致减速。有一个开放的功能请求-debbugs.gnu.org/cgi/bugreport.cgi?bug=22873-将多个游标功能移至C源代码中,但目前仍在讨论中。我建议给Emacs开发团队的卖点之一是,如果将其放入C代码库,则可能会提高速度。
法律学家

3
我没有解决方案,但也想为我确认同样的速度。如果问题追溯到字体锁定问题,我不会感到惊讶。当我全局取消字体锁定时,光标再次变得活泼。
Emacs用户

1
...在这种情况下,多光标不会直接导致减速(即使在使用减速时,事实证明它只是一个因素)。我会M-x profiler-start做一些缓慢的事情,然后M-x profiler-report,并继续深入研究占用大量CPU时间的项目,直到可以将其隔离到某个特定的库(如果有的话)为止。然后尝试禁用该库。完成分析器后,别忘了停止它。
phils

Answers:


5

可以通过设置不能在多个光标模式下正常使用的次要模式的列表mc/unsupported-minor-modes。进入多光标模式时,添加到该列表的所有模式都将被禁用,一旦退出多光标模式,它们将被重新启用。

您可以像这样将商品添加到此列表中

(add-to-list 'mc/unsupported-minor-modes 'flyspell-mode)

这对多光标模式的响应能力有很大的不同。我发现影响最大的两个次要模式是linum模式和flyspell。


如果有人可以尝试解释为什么flyspell会使事情变慢(或给出简明的方法来重现flyspell的缓慢现象),也许我们可以尝试解决问题。
Stefan

1
我试图剖析速度缓慢,但无法找到任何一致的模式。话虽如此,flyspell引入的缓慢程度还不错,我发现更糟糕的模块是linum模式。关闭亚麻模式让我从30个光标走在时间超过600
查尔斯·里奇

可复制的配方将大有帮助。
Stefan's

1
感谢您的帮助!。看来这就是问题所在。我必须禁用的Indent-guide-mode和Linum-mode(我禁用了indent-guide,并用nlinum替换了Linum)。现在,我可以拥有数百个游标,而不会出现任何滞后。
曼(Fabman)

0

...超过30或50个游标,它变得非常慢....

这是一个临时解决方案:调整此变量

mc/max-cursors

小于30的值作为解决方法。默认值为nil,表示没有限制。恢复速度的实际数字取决于缓冲区类型,使用的字体以及当时正在运行的任何其他内容。无论如何,您所遇到的问题已被广泛报道。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.