最近在使用 org-roam 记笔记, 效果都很理想.
目前困惑在于根据关键词查找很多 org 文件中的某项内容时十分困难.
目前自己找到的方案都不是很理想, 它们有:
-
deft: 这个似乎只能根据一组 org 笔记的文件标题或者文件名进行搜索.
-
org-roam: 这是目前我在用的卡片盒. 它的节点定位能够相比 deft 的文件名更精准, 但是想要根据关键词全文搜索内容还是做不到.
我的需求是可以在搜索时通过 org 文件的内容来进行定位, 而不是标题或者 org-roam 的 node.
如上所述, 折腾了一阵并未找到解决方案.
在这里求教一下各位, 有没有好的方案可以解决这个问题?
2 个赞
(defun bms/org-roam-rg-search ()
"Search org-roam directory using consult-ripgrep. With live-preview."
(interactive)
(let ((consult-ripgrep-command "rg --null --ignore-case --type org --line-buffered --color=always --max-columns=500 --no-heading --line-number . -e ARG OPTS"))
(consult-ripgrep org-roam-directory)))
3 个赞
alphapapa/org-rifle: Rifle through your Org-mode buffers and acquire your target
可以对agenda中的org文件进行全文搜索,搜索效果的展示也很直观。
下图是在我的笔记中搜索「零和」的效果,可以看到是那个文件,heading层级,关键词也高亮了:
7 个赞
前面几个方法感觉都挺好,我也打算替换楼主提的deft,不过我这里deft是可以检索文件内容的,不光光是文件标题和文件名,只是定位不好
1 个赞
对照着改了一个counsel的版本,counsel似乎不支持color=always
,另外--fixed-strings
好像不能用,会导致搜索不到任何结果,不知道能不能改进一下
(defun solarion/org-roam-rg ()
"Search org-roam directory using counsel-rg."
(interactive)
(let ((counsel-rg-base-command '("rg" "--max-columns" "500" "--with-filename" "--no-heading" "--line-number" "--color" "never" "--ignore-case" "--type" "org" "%s")))
(counsel-rg nil org-roam-directory)))
1 个赞
wsug
11
如果会做web后端的话,可以直接把org文件放进数据库,然后写sql语句查询搜索,这样org文件数在多,量在大也可以应对。输入->执行->搜索结果展示这些都可以 全在org-mode里面进行的
1 个赞
直接 rg 啊,把 org 所在的目录 git init 一下
1 个赞
wsug
13
rg不太好对搜索结果按笔记日期排序,以及切换排序方式
1 个赞
Ilya.w
14
学到了, 原来还可以这样操作. 我有时间研究研究, 有成果的话就把操作过程贴过来.
helm-org-rifle-org-directory
有办法添加org-directory目录到插件中吗