灵巧模式非常慢

问题描述 投票:0回答:5

我刚开始使用

emacs24
(Ubuntu 自带的),以便使用
deft mode
来模仿 Mac 上
notational velocity
的行为。我的
~/.emacs-d/init.el
长这样:

(add-to-list 'load-path "~/.emacs.d")
(require 'deft)
(setq deft-directory "~/Notes")
(setq deft-use-filename-as-title t)

为了用

txt
文件加载我的文件夹。我在文件夹中有几千个文件名包含 CJK 字符的文本文件。现在,运行
deft mode
现在/非常/慢,甚至无法键入以在文件中搜索。输入一个词后,我必须等待几分钟,它才会出现在屏幕上并搜索笔记。即使关闭
emacs
也需要很长时间。我的电脑是 Lenovo W540 64 位 i7-4800MQ CPU @ 2.70GHz × 8 和 23.2 GiB 内存(它告诉我)。我正在运行 Ubuntu 14.04。我的 emacs 可能出了什么问题?

我是 emacs 的新手,坦率地说,我什至不明白我刚刚在上面写的内容,我只是想从我在网上找到的教程中拼凑出我想要的设置,所以请原谅我的问题中可能出现的任何愚蠢行为.提前致谢!

emacs emacs24
5个回答
4
投票

我很高兴被证明是错误的,但我不认为 deft 旨在处理“几千个文本文件”!您肯定需要某种专门的索引和搜索工具来有效地处理大量数据。

我有点过时了,但我相信 deft 只是在 Emacs 中打开文件并使用正则表达式搜索来查找匹配项(这对于较小数量的文件来说很好,但它不会扩展到您的用例).

我能提出的唯一建议是确保 deft.el 是字节编译的(即你有一个 deft.elc 文件)。否则使用

M-x byte-compile-file
。但是,即使您当前使用的是未编译版本,我也不认为它会提供您需要的那种性能改进,使它成为一个可行的解决方案。


2
投票

我发现这个解决方案限制了使用增量搜索时显示的注释数量:https://github.com/jrblevin/deft/issues/43

  ;; Overwrite `deft-current-files` for the `deft-buffer-setup` and limit it to 30 entries
  (defun anks-deft-limiting-fn (orig-fun &rest args)
    (let
        ((deft-current-files (-take 30 deft-current-files)))
      (apply orig-fun args)))

  (advice-add 'deft-buffer-setup :around #'anks-deft-limiting-fn)

它对我有所帮助,尽管在使用几千个音符时 deft 仍然不是很活泼,就像我一样。


1
投票

从 0.9 版开始,添加了一个变量

deft-file-limit
,设置“在 Deft 浏览器中列出的最大文件数”。

所以要复制 trmdttr 的 30 个文件的配置答案,您需要将其添加到您的配置中:

(setq deft-file-limit 30)

1
投票

notdeft 是为此类用例而创建的软件包;它使用外部后端进行索引和搜索(并且可以处理大量的大文件)

编辑:这是 GitHub 的链接:https://github.com/hasu/notdeft

设置起来有点不直观(我认为这是 Deft 最大的亮点)。您必须编译后端,但基本界面是相同的;您只需输入单词,它就会实时更新结果。有一种使用查询语法的高级方法,但这不是必需的。只需搜索“noteContent1 noteContent2 :tagName:”就会列出在某处同时具有内容和标签的文件,并且它可以扩展到千兆字节的笔记。


0
投票

尽管设置了 deft-file-limit,但我发现使用 Emacs 28 进行 deft 搜索速度慢得无法使用。我使用了 notdeft,它工作得相当好,但不能很好地与我的跨平台 .emacs.d 目录一起工作。我确定我可以破解 notdeft 以查看 OS + arch 特定目录,但它对我来说不够重要,无法投入时间。

Emacs 29 将灵巧恢复到接近以前的速度。使用 Emacs 29 的 Deft 可能不足以应对“数千个文件”的情况,但它可以很好地处理大约一千个文件。它不是超级快,但完全适合居住。

Emacs 29 尚未正式发布,但我发现它的各种速度改进(比如不会被排长队削弱)值得加入 Emacs 29 的行列。

© www.soinside.com 2019 - 2024. All rights reserved.