我最近从
vim
移至 Emacs
,因为我想使用 org-mode
。我在 Emacs23
Org-mode
中打开了约 10000 行、50kb 的文件,然后添加了大约 10 个一级标题。 Ubuntu 10.04/32 位下的 Emacs23 在四核 3GB RAM 上的性能非常慢,以至于无法使用。我在 Org-mode
电子邮件列表中发现了 two threads讨论此问题。似乎启用
linum
会导致性能下降。如果有必要的话,我可以在 .org
文件中没有行号,但我不想禁用我编辑的所有文件的行号。如果我要“生活”在“Emacs”中,我需要所有其他文件的行号。
如何仅对部分或全部
linum
文件禁用 .org
?如果我在 Emacs
中打开多个文件并在它们之间切换,是否可以执行此操作?我发现了一些关于禁用主要模式的行号的讨论here,但是我没有什么可以实现的(尽管页面上的linum-off.el
脚本提到看起来很有希望,但我(还)不知道(E) Lisp,所以我无法根据需要更改它)。
我将
Org-mode
从6.21b版本(附带Emacs23
)更新到7.5版本,但没有什么区别。 Emacs
GUI 的性能非常糟糕,以至于应用程序根本无法响应。 -nw
的性能“更好”,但仍然无法使用。
尝试将其添加到您的 .emacs 中:
(defun nolinum ()
(global-linum-mode 0)
)
(add-hook 'org-mode-hook 'nolinum)
这是假设您使用 linum 而不是其他东西来对行进行编号。无论如何,您可以将此钩子添加到 org-mode 中,以禁用任何可能使 org 变慢的东西仅当您使用 org-mode 时。
免责声明:我没有安装 linum,所以我无法测试它,但它应该可以工作。
如果输入 M-x custom,进入 Convenience 组中的 Linum,将 Linum Eager 更改为关闭,或者将 Linum Delay 更改为打开,这将大大提高性能。
在我的笔记本电脑(3 GB RAM,双核)上,性能缺陷(与关闭 linum 相比)并不明显,但是在我的上网本上,约 3000 行 130KB 文件(约 50-150寻呼时延迟毫秒)。
linum-off.el
已经解决了这个问题。文件中包含说明:将文件放入 Emacs 加载路径并将 (require 'linum-off)
添加到 ~/.emacs。此脚本仅关闭指定模式的行编号。我测试过,效果很好。
使用 nlinum,一个更快的替代方案。
只需要添加 (add-hook 'org-mode-hook (lambda () (linum-mode 0))) 即可。
我尝试了以下方法,效果很好:
(defun nolinum ()
(interactive)
(message "Deactivated linum mode")
(global-linum-mode 0)
(linum-mode 0)
)
(global-set-key (kbd "<f6>") 'nolinum)
(add-hook 'org-mode-hook 'nolinum)
当然,您不需要键绑定。我建议您将其保留用于测试目的,如果一切正常则禁用它。