org mode(emacs)相比markdown的好处

markdown我用了好几年, 切换到emacs org mode不到1个月. 其它文本编辑还是在vim中做, 写笔记在emacs中做. 用org mode真是有着说不出的爽. 我用过的笔记软件有obsidian, 思源笔记, vim(还写了几个插件). 每一个我至少都连续用过几个月. 但现在看来, org mode结合了它们几乎全部的核心优点(有一个vim的插件我还没有迁移过去).

  • obsidian的核心特点是双链/搜索, 索引这一点我还没找到方案, 目前还用的是ripgrep这种方式, 虽然同样很快, 但比如搜索多个关键词, 编写正则表达式就比较麻烦了. 双链, org mode 也支持.
  • 思源笔记的核心特点也有索引. 思源笔记的格式其实是json不是markdown, 特点是以块为单位, 而且支持自定义特性. 这一点, org mode也有, 那就是以entry为单位(entry就是一个标题+内容), 每一个entry有property块, 可以定义 key-value 对.
  • vim特点没啥, 只是那些插件让它好用了起来. 其中多数插件都有org mode的原生支持, 比如链接支持, 比如标题搜索. 但还有个插件没找到对应方案, 那就是整个目录下的标题搜索..

org, markdown本身说文本格式的优劣没有意义, 它们都是纯文本, 关键在于, 支持它们的软件提供了多少功能. 语法和软件是互相配合的. 关系类似于编程语言语法和编译器. 不过, org格式比markdown复杂得多, markdown的语法是org语法的真子集, 并且 org mode 提供了非常多的支持. 但不一定用得上.

就来列举一下 org mode 能做到, 而 obsidian, typora, vim 做不到的事:

  • 对latex, html 导出的支持极好. 下面列举的对 html 也成立.

    • org-mode支持导出各种latex模板. 我之前花费了很多功夫(可能接近15小时了), 解决了markdown导出latex的问题, 辛苦达到的效果, 是org-mode原生就轻松支持的. 截个图:
    • 支持各种自定制. 比如想调图片宽度, 想调图片表格的标题, 调整浮动体的位置, 是否需要date, author, 是否需要maketoc, 这些全都不是事.
    • 解析完备. 举个小例子. 有一次, 我图片用的是svg格式. 导出时发现已经贴心地从includegraphics变成了includesvg.
    • 可以内嵌latex代码. 既可以是行内代码, 又可以是代码块. 举例子, latex有tilde command, 表示空格且不换行. 这个语法, org mode原生是没有的, 但可以内嵌latex代码.
  • 支持预览latex片段, 不过速度比较慢, 延迟大概在几秒到十几秒.

  • 对表格的强大支持, 甚至我都没用到spreadsheet(就是类似excel的formula). 这一点怎么讲呢, 截个图, 你们就知道我是啥意思了.
    emacs中显示为:

    完整显示, 要编辑哪一个也是轻轻松松.
    在typora中:

    无法完整显示, 找个格子都要找一会儿.

  • 大纲编辑极其方便. 在markdown中, 调整文件结构无论是在vim还是在obsidian都是一件不轻松的事. 但对org mode, 简直弹指一挥间. 只显示当前标题, 只显示某级别以上的标题. 还有快捷键上下移动之类的. 总之你可以认为它首先是大纲软件, 只是顺便有强大的支持. 支持无限级标题, 但是显示上支持8级标题, 第9级标题的效果会和第1级标题相同, 循环.

  • org babel. 绝对是杀器, 这么说吧, 普通的markdown做不到. rmarkdown做得到但远不如. 说起来就是可以直接在org mode中执行代码. 没错, jupyter notebook也可以, rmarkdown也可以. 但它有这些功能:

    • 灵活地自定义导出.
    • 支持80+语言, 我甚至执行过mathematica(支持不如r等好)
    • 可同时开多个session, 不同语言可以穿插着用. jupyter notebook, kernel只能切换, 但不能同时用, 除非你再打开一个notebook.
      举个例子, 在R中, 画图函数, 可以边执行边得到图片, 而且可以直接显示.

      (这个图糊了, 但是是R代码的问题, 与org mode无关).
      其它一些我没说, 且markdown没有的功能:
  • GTD, 因为这里是在讨论做笔记.

  • org-cature, 因为我自己还没用过.

  • literate programming, 我感觉非常强大, 在某些情况下非常有用, 但我还没学过.
    ...

至于obsidian等markdown加起来有的优点, org mode也同样有类似feature, 比如:

  • 通过插件支持双链
  • 图片插入到指定位置

org mode对我不是没有缺点, 先说一个我最在意且知道无法解决的缺点: 不支持javascript. 因此不支持mathjax. 要预览数学公式, 只能先用快捷键生成图片. 生成图片清晰度可以很高, 但是不如mathjax来得快和丝滑. 需要卡上几秒, 效果也不像mathjax那么好看.

至于其它我知道学了elisp就可以解决的缺点, 就不说了.

posted @ 2022-05-17 18:28  Tokubara  阅读(1641)  评论(0编辑  收藏  举报