来自Obsidian的用户希望将文档仓库转移到Emacs有什么建议吗?

过去我使用Obsidian搭建资料仓库,但是软件本身存在性能问题、bug乃至内存泄漏。因此希望尝试转移到Emacs。

我曾经在Obsidian中大量使用JavaScript渲染DOM用于创建一些小程序和实现动态文档。可以直接在代码块中输入JavaScript代码,离开编辑后即时渲染。请问Emacs中可以支持这种操作吗?

我还曾向Obsidian的浏览器内核注入脚本用于定制界面、挂载一些管理程序用于自动化管理文档。请问这样的代码可以转移到Emacs的内置浏览器上吗?

最后,我使用Obsidian库时将所有文件、脚本以及配置等全部打包在一个文件夹下,使得仓库可以轻松在多个计算机间来往携带。请问Emacs中可以延续这一理念吗?

  1. 不可以. Emacs 由 Elisp 编写而成, 无法像 Obsidian 那样对 JavaScript 有一等支持. Emacs 的专精领域在于文本, Elisp 是 Emacs 的编程语言, JavaScript 无法在 Emacs 中执行.

  2. 不可以. Emacs 的内置浏览器只能解析 HTML, 无法执行 JavaScript 代码.

  3. 可以. Emacs 的插件, 配置等文件默认存放在 ~/.emacs.d/ 目录下, 称为 user-emacs-directory. Emacs在启动时会在该目录下查找并执行配置文件. 可以通过启动时设置 --init-directory 参数指定任一目录为 user-emacs-directory.

    在不同的计算机上工作时, 只要同步 user-emacs-directory, 便可以同步所有的插件, 配置等 (暂不讨论不同版本之间的 Elisp 代码兼容性以及 native-compilation 等问题). 用户文件也可以放在该目录下任意路径一并同步, 在打开文件时使用正确的文件名即可.

如果对 JavaScript 的依赖较重, 推荐不要使用 Emacs. Emacs 的优势是 Elisp 的灵活性对文本编辑以及任何文本处理工作的效率加持. 可以考虑脱离Obsidian以及其他基于Web技术的软件的束缚, 直接使用浏览器.

1 个赞

多谢解答。

最近我了解到Emacs中可以运行全功能浏览器,还可以使用PyQt创建窗口。请问我能否通过Elisp启动一个node子进程挂载到Emacs下,让它们协同工作?

Linux下直接用EAF吧 GitHub - emacs-eaf/emacs-application-framework: EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs