gpt4 book ai didi

emacs - 在 Emacs Org-mode 中设置个人 wiki

转载 作者:行者123 更新时间:2023-12-04 01:02:24 25 4
gpt4 key购买 nike

我想在组织模式下设置个人 wiki。

到目前为止,我已经尝试了这两种方法。我的第一次尝试是使用单个“Scientific Notebook.org”文件。这是我所有的笔记——每个笔记都有自己的标题、日期和标签(与博客文章格式相同)。然后我打开 org-velocity 来快速浏览文件。

但这产生了两个问题:首先,我在笔记中使用了大量数学(LaTeX 预览是我想要我们组织的原因之一)。但是这些需要很长时间才能加载,我无法尝试打开包含数千个条目的文件(全部充满数学!!)

我遇到的另一个问题是标签。我喜欢使用很多多词标签来交叉引用我的笔记。但是 org-mode 将它们包装在缓冲区中的方式使我的标题完全无法理解。另外(也许只是我一个人,但是)我发现 CamelCase 真的很难读懂,尤其是在遇到以下情况时:

:monotonicTransformations:homogeneousFunctions:orderedSets:proofs:

现在我的第二次尝试是使用 Deft。在这里,我将每个笔记分解成自己的 .org 文件,并创建了一个专用的 ~/org/文件夹来保存我的 wiki。但这就是我被困的地方:

1)你如何设置自动链接,以便在一个笔记中输入“foo bar”,创建一个指向“foo bar.org”的链接?这可以用 radio 目标完成吗?如果没有,是否可以覆盖此语法 [[foo bar]] 以在 ~/org/目录中的所有文件中搜索标题?我尝试将 Wiki.el 添加为次要模式,但没有骰子...

2)你如何标记单个文件?然后你怎么能拉出所有标签的列表并使用它来过滤你的笔记列表?我读过 bookmark+ 可以让你做文件标记。但是我在在线文档中迷失了...

我很想听听其他人是如何解决这些问题的,您正在使用哪些次要模式,工作流程和键盘快捷键或其他 mod!

谢谢!

-亚当

最佳答案

在我看来,只有一个笔记文件更灵活和兼容。然而,即使是中等大小的文件,它也往往会变慢。多个小文件很快,但它们需要更多的努力来设置,并且它们只能在该设置中工作。

单文件解决方案

为了加快速度,请考虑设置 org-startup-with-latex-preview为零(或将 #+STARTUP: nolatexpreview 添加到您的文件中)。

标签不仅在用于关键字时会变得困惑,而且随着文件的增长,使用它们也会变得相当慢。我玩过一些自定义函数,但现在大部分时间都避免使用标签。相反,我使用平面层次结构、类别,否则依赖于发生和组织发生(例如 M-x org-occur begin_proof)。

多个文件

链接到其他文件的组织语法相当简单:[[./this idea.org][this idea]] .如果这太麻烦,那么编写一个函数来用适当的链接替换事件区域应该很容易。

如果您想链接 [[this idea]]到文件“这个idea.org”,你可以添加一个函数到org-open-at-point-functions并自己处理。

至于标签,您不标记文件本身,而是标记单个顶级标题。这当然意味着你所有的麻烦也都贴上了标签。
同样,我建议不要使用标签。只需确保文件在正确的位置包含正确的关键字并使用 occur和 friend 。

编辑:示例`org-open-at-point-function'

如果要在目录中的所有文件中搜索模糊链接,而不仅仅是当前缓冲区,可以使用 org-open-at-point-functions 来完成此操作。钩。下面是一个例子:

(defvar my-link-search-directory "/my/notes/directory/")

(defun my-open-link-function ()
"Open link, interpreting it a the name of a headline."
(let* ((el (org-element-context))
(type (first el))
(link-type (plist-get (cadr el) :type))
(path (let ((path-1 (plist-get (cadr el) :path)))
(when (stringp path-1)
(org-link-unescape path-1)))))
(when (and (eql type 'link)
path
(string= link-type "fuzzy"))
(let* ((path (regexp-quote path))
(result
(delq nil
(org-map-entries
(lambda ()
(when (string-match
path
(org-get-heading))
(list (buffer-file-name) (point))))
nil
;; Here we set the scope.
;; 'agenda would search in all agenda files.
;; We want a list of all org files in `my-link-search-directory'.
(directory-files
my-link-search-directory
t "[.]org\\'")))))
(when result
(when (> (length result) 1)
(message "Warning: multiple search results for %s" path))
(let ((file (caar result))
(pos (cadar result)))
(find-file file)
(goto-char pos)))))))


(add-hook
'org-open-at-point-functions
'my-open-link-function)

请注意,我还没有测试这么多。

实际上,除非您真的需要它,否则我建议不要使用它。虽然制作花哨的扩展很诱人,但最好让您的笔记尽可能简单。如果您将所有内容都放在一个文件中,您可以在需要时使用记事本或谷歌文档或其他工具编辑您的笔记。

关于emacs - 在 Emacs Org-mode 中设置个人 wiki,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26669280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com