确实没用过xeft, 如果是搜文本内容的话,我个人不太喜欢,特别是笔记多起来以后,会有很多相似的结果还要去过滤,实在需要搜文本再用rg去搜就好了。
xeft 是逻辑搜索,跟搜索引擎的高级搜索一样。
rg 是正则搜索。
khoj 是自然语言搜索/语义搜索。
这三者不是互相替代的关系,你没用过就体会不到其中的区别。
谢谢!第一次知道 recoll 这个软件,确实是基于 xapian 构建的,emacs 里也有不少有关插件,不过它的 windows 版是收费的,我再去了解一下。
我一直用的 org-roam,笔记用 Git 管理,通过 Github 跨平台共享,要搜索全文就用 consult-ripgrep
这个命令,速度也很快。
是的,我也是这套工作流,只要做笔记的时候把headline做好加入到roam的数据库中,基本上很少需要去全文搜索,很高效。
我目前也是的,不过也实在有点眼馋,想试试 Xeft 之类的工具怎么样
确实,命名很重要。我是不用 org-roam 那个 org-roam-dailies
的,我的 node 都有名字。
想请教一下你会写 daily notes 之类的吗?比如一些总结、计划、流水性质的笔记,或者说一些暂时不知道如何归类的笔记,我之前是按照 org-mode 默认的那种 datetree 即在一个 journal.org 里的,后来还是按照 org-roam-dailies 的方式分开在每天的 org 文件里,目前感觉各有利弊
我比较懒,不用 org-roam的 daily notes。临时的笔记我会 org-capture 到 agenda 的 inbox.org 里面,或者先记在手机的 Borg 里面,也是会自动同步到agenda的 inbox.org。有空了觉得有用再整理到 org-roam 里面去。
感谢,笔记确实还是需要整理。
重新编译一个是唯一办法。。。不过怕麻烦的话,用ripgrep或者ugrep配合consult-ripgrep或者consult-grep最方便,速度也快,就是UI没有xeft那么漂亮。
看来 windows 下只能这样了,我目前主要也是有必要时用 counsel-rg
和 color-rg
检索, deft
太慢了,今天尝试了 @suliveevil 推荐的 org-recoll
, windows 下搜索中文存在乱码问题,看来 windows 下用 Emacs 还是限制多多,先不折腾了。。
官方的 emacs 也是用 mingw-w64编译的,默认是支持动态模块的,可以看 module-file-suffix
变量的值判断是否支持动态模块,支持的话值在 Windows 上应该是 .dll
没有加载成功的原因应该是 xapian-lite.dll
依赖一些动态库,但是那些动态库 emacs 找不到。
可以通过 ldd xapian-lite.dll
查看依赖哪些动态库,将没有的拷贝到 emacs.exe 目录
或者将 mingw64 的 bin 目录加到环境变量 PATH 中,eg. C:\msys64\mingw64\bin
大佬太强了!我的 Emacs module-file-suffix
返回的确实是 .dll
,用 ldd xapian-lite.dll
查看的结果是这样的:
M-x xeft
可以正常出 xeft
的界面了。
这里还踩到的一个坑是本来 xeft-database
设置的是 ~/xeft_db/
,结果报 xeft-full-reindex: Xapian library error: "DatabaseCreateError: c:/Users/xxx/xeft_db/: mkdir failed (File exists)"
,设置成 ~/xeft_db
(去掉最后的斜杠) 后解决了这个问题。
不过现在还有两个小问题,一个是找到结果后,在条目上执行 xeft--find-file-at-point
(回车) 后跳转的位置不对,不是关键词位置;另外似乎 Github 上的动图 (如下) 是实时出结果,我这边每次输入检索式后需要执行 xeft-refresh-full
(默认是 C-c C-g
) 后,才能更新结果。
太感谢了!折腾了两天,本来都快放弃了
出结果是绑定的 SPACE 键,gif 上应该不是实时的,应该是按了空格键
好吧,那应该就不是问题了。但是我试了一下,我这边在检索式上按空格没有刷新结果,我看了默认的 xeft-mode-map
是这样的:
(defvar xeft-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "RET") #'xeft-create-note)
(define-key map (kbd "C-c C-g") #'xeft-refresh-full)
(define-key map (kbd "C-c C-r") #'xeft-full-reindex)
(define-key map (kbd "C-n") #'xeft-next)
(define-key map (kbd "C-p") #'xeft-previous)
map)
"Mode map for `xeft-mode'.")
不知道是不是作者用空格绑定了 xeft-refresh
函数。
readme 提到了按空格预览,不需要任何配置 ,可能是你的emacs配置影响了吧
空格绑定的是 push-button
谢谢!我明白你的意思了,可能我没有表达清楚,我这边在条目上是按空格是可以预览的。
我是说在输入检索式的时候,似乎这个 gif 上在敲击检索式的时候,下面的检索结果就在刷新,deft
也是这样的,但是我用 xeft
的时候,输入检索式的过程中下面的检索结果不是实时更新的,我每次要按 C-c C-g
或者 M-x xeft-refresh
才能更新。
重启了下 Emacs,现在 xeft
里也能够输入检索式的时候实时更新下面的结果了
非常感谢大家的帮助!总算用上 xeft
了,确实检索速度还挺快的。