LWN:关于Emacs Org mode!

文章讲述了作者JakeEdge在学习Emacs的过程中,对Orgmode的深入了解,包括其作为文本标记语言的强大功能、待办事项管理、Babel代码执行、以及Roam等扩展应用。作者分享了自己如何逐步沉浸在这个丰富的编辑器世界中。
摘要由CSDN通过智能技术生成

关注了就能看到更多这么棒的文章哦~

Notes on Emacs Org mode

By Jake Edge
January 10, 2024
ChatGPT translation
https://lwn.net/Articles/957316/

在某种程度上来说为了学习更多 Lisp 的知识,我开始学习 master Emacs,而这个过程中我花了相当多的时间深入 Emacs 世界的各种角落,其中之一就是著名的"Org mode",这个模式用于编辑器内的各种组织化任务(organizational task),它还不限于 Emacs,在Vim和其他一些编辑器中也可以使用。Org mode 可用于制作待办事项列表、带有相互连接的笔记、文学编程、网站等等。现在,我的任务正变得更加庞大,挖掘 Org mode 是其中之一。

在不断探索 Emacs 世界的过程中,很难不接触到使用 Org mode 进行各种不同任务的众多赞美之词。多年来,我对它有一些了解,通过Beancount的介绍、通过2020年讨论使Emacs更受欢迎中提到它,以及在关于待办事项管理的文章中的描述。然而,直到最近,我才真正涉足 Org。

Org start

与许多其他事物一样(特别是与 Emacs 相关的事物都是这样),迅速掌握 Org 并不是一件简单的任务——基础知识是简单明了的,但主题的深度(和广度)很大。Org 背后的主要思想是成为一种文本标记语言,类似于Markdown,但这里有很大区别——Org 不仅仅是为了简单的格式化。其意图是产生人类和程序都能轻松阅读的文本——然后程序可以将文本转换为多种不同类型的输出。Org 可以导出为差不多十来种不同的格式,包括 HTML、LaTeX、Markdown、Texinfo 和 OpenDocument 文本。当然,可以添加新的后端支持以支持额外的导出选项。

简单的格式化部分包括使用星号指示的各级别的“标题(headlines)”,使用少量不同标点符号表示的各种列表项目,以及用于修饰单词和短语的标点符号(例如斜体和粗体)。Org-mode quick start page以快节奏的方式概述了除标题、列表和样式属性之外的不同类型的标记;它还添加了链接、图像、表格等。一个示例 Org 文件可能如下所示:

* 我的第一个Org文件

  ** Org拥有不同级别的标题

  ** Org中的列表可以采用多种形式

     *** 例如:
         - 这是一个简单的列表
         - 共有两个条目

     *** 而这是一个带有子列表的编号列表
         1. 条目一
            + 具有三个条目的子列表
            + 第二个
            + 第三个
         2. El segundo
            - 另一种
            - 列表类型

  ** 与此同时,我们可以添加样式属性
     - *粗体*
     - /斜体/
     - _下划线_
     - 等等

```

需要注意的第一件事是,尽管在 Emacs 缓冲区中由于 Org 模式(更重要的是Org Indent次要模式)的效果使得文件可能看起来或多或少是缩进的,但实际上磁盘上文件中的文本(大多数情况下)都是左对齐的。在我的系统上,默认情况下,对于 .org 文件启用了 Org 模式,但是通过M-x customize或启动文件来启用 Org Indent。在我的 Emacs 缓冲区中,标题星号被压缩为单个星号,不同级别的标题以颜色区分并缩进;此外,样式属性也反映在缓冲区中的文本上,因此例如 *bold* 是以 bold 样式显示的。

在我有限的经验中,处理多级列表有点棘手。通过观看一个由"Org mode beginning at the basics"教程推荐的屏幕录像是有帮助的,尽管大家都知道我通常更喜欢基于文本而不是基于视频的信息。使用仅需几个按键即可对列表执行各种操作,例如重新排序条目、更改列表类型、隐藏和显示子条目、添加可切换的条目复选框等。

这之外,通过使用 Tab 键(当然也可以使用 Shift-Tab),不同级别的标题可以折叠或展开。这使得可以将更大的 Org 文档改成仅显示顶级标题,或者只显示正在处理的特定区域。

To do

待办事项列表的管理是 Org 模式最常提及的用途之一,与其他许多功能一样,这里有一些简单的基础知识,以及对于想要更深入进来的人来说也有足够的深度内容。任何标题或列表元素都可以标记为"TODO"以将其变为TODO项; "TODO"在我的系统上显示为红色,当然这可以进行配置。在该项的任何位置键入 Shift-右箭头,就会将其变为“DONE”(绿色),再次输入这个案件组合会删除该处的任何文本,再次将其变回“TODO”。这意味着任何条目都可以通过单个按键转换为 TODO 项;左箭头则按相应地向后遍历该序列。

可以使用一个按键序列在文件中突出显示 TODO 项;这将折叠所有未标记为"TODO"的条目。您还可以将具有 TODO 项的文件添加到“agenda(议程)”中,并有按键将这些文件中的所有项目收集到一个缓冲区或文件中,从而组合形成议程。当然可以进行许多不同类型的定制,包括可以让项目处于各种不同状态(TODO,DONE)。基于相关的文章介绍和视频录像的数量,Org 模式显然是 Emacs 最常用的功能之一,仅次于文本编辑本身。

其中一些文章是引起我关注并深入研究 Org 的原因。Eric MacAdie 在新年的blog post on Org commands引起了我的注意,我在 Sacha Chua 的(非常详细的)“Emacs news”的一期中注意到了这一点。 MacAdie 还有其他与Emacs相关的博客文章,在我一路阅读中发现了一些有趣的内容;那里有相当多的内容等待阅读。

他显然对 Emacs 按键序列(和“按键组合(chord)”)有普遍厌恶,但是将他所讨论的 M-x 命令转换为它们的键快捷键相当容易。他指向了 Rainer König 关于使用 Org 模式的Udemy course;一旦我意识到它附带了一个 100 页的 PDF 文本,我支付了(很小的)费用来跳过视频。最后,我看了一些视频(可能还会看更多);演示可能有点单调,但绝对有用。König 在 Emacs 中明确显示按下的按键的工具非常有帮助,因为在屏幕录像等情况下很难看到按键输入。

Babel

在被 MacAdie 的帖子提醒之前,我已经开始在一个 Org 模式的文件中做一些笔记(可能将来会在这里发布于此有关的一篇文章)。在那些笔记中,我开始尝试直接从 Org 文件中执行代码,这在某种程度上类似于用于 Python、Julia 和其他语言的计算笔记本的功能(例如IPython和Pluto)。Org 模式有一个内置的扩展,Babel,允许直接将代码放入文本文件中,执行它,并将输出合并到文本中。

Babel 可以以各种方式使用。“introducing Babel”页面描述了它的一种用法:

一段数据可能会从一个 Org 表格传递到一个 Python 代码块,然后可能再传递到一个 R 代码块,最终形成嵌入段落中的数值,或者可能通过一个 Gnuplot 代码块,最终转化成嵌入文档的图形。

它提供了一种在 Emacs 中使用文本文件进行文学化编程(literate programming)的方式。或者只是确保某人在文章或书中的示例实际上执行了预期的操作。有多种的用于不同编程语言的 Babel 后端,可以按照描述的方式混合使用。

有一个语言列表是跟 Emacs 一起提供的,尽管它们需要在 Babel 中使用之前进行激活。还有一些较少人知道的语言分布在org-contrib;还可以在Emacs Lisp Package Archive(ELPA)和其他地方找到更多语言。一些语言的配置(例如Racket for Org Babel)看起来可能有点棘手,尽管我已经能够对 Common Lisp 和 Python 进行一些初步测试,Racket 还是得过段时间再看了。

Roam(if you want to)

最近引起我注意的另一个 Org 工具是Org-roam,我根本没有尝试过,但它看起来很有趣(这个想法总是很危险)。它允许您创建一个Hypercard风格的笔记文件网络,有时被称为“您的第二大脑”—或类似的词语。我是通过在 Web 上搜索“在 org mode 中做笔记”之类的内容,然后我看到两篇不同的博客文章(第一篇,第二篇)介绍了使用 Roam 创建、维护和使用“笔记网络”的过程。

因此,我应该将 Roam 添加到“我应该更仔细研究的事物”不断增长的列表中。开个玩笑,当你(或至少是我)开始沿着这种方式的路径时,这是一个真正的危险:主题的数量几乎以排列组合的方式激增。在进入另一个主题之前,很难在一个主题或领域中深入了解。但是,事情就是这样—学习新东西总是有趣的—毕竟,生活实际上并不是关于最终目标的。

在我尝试在 Emacs 中做的不仅仅是完成工作所需的最低限度的六个月左右的时间里,我学到了很多。我开始真正感受到在单一环境中拥有“一切”、拥有一套大致一致、尽管独特、占用内存、让手指扭曲的命令的优势。当然,Emacs 的支持者一直在宣扬这些优势,所以我并不是不知道它们的存在。个人而言,我从未觉得有必要拥有这种无所不包的体验,但也许我很早以前就应该进入这个兔子洞。现在我开始思考是否应该考虑在 Emacs 中使用电子邮件—兔子洞无处不在。

这篇文章对 Org 模式进行了高度个性化的审视—或许可以看作是脑袋中的一场旋风般的倾倒—希望它能让你略知一二,但其他编辑器中至少对其功能提供了一些支持,因此那些用户(包括我在内)仍然可以利用它。希望获取有关 Org 的更多信息的读者将在文章中找到许多起点,但还有一个要添加到列表中(也许是写在一个 .org 文件中的列表)的地方:Worg,即“Org 的世界”社区维基。我可以确保的是,Org 模式—当然还有 Emacs 本身—在宽度、深度和其他一些维度上都有丰富的内容。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值