执行功能如代码:使用 Doom Emacs 脚本化我的大脑
Source: Dev.to
请提供您希望翻译的正文内容,我将按照要求保留源链接、格式和技术术语,仅翻译正文文本。
在我人生的前 21 年…
我感觉自己在与自己进行一场上坡战——到处都是半废弃的项目,时常想着 “我本可以而且应该做得更多。”
好像我装载的是有缺陷的软件,而其他人似乎轻而易举地完成即使是最简单的任务。
事实是?我并不是在运行有缺陷的软件;我运行的是完全不同的操作系统。
最近我找到了文档:ADHD。
当我了解了这个环境的规格后,我意识到像 Notion 或手机待办列表这样的标准工具根本帮不上忙。它们假设有一个我根本不存在的正常运行环境。
在我的设备上,我已经在使用 Doom Emacs,因为我是个喜欢摆弄技术的极客。所以,我没有尝试去改变自己以适应某个工具,而是决定学习一点 Elisp,把工具改造成适合我的样子。
下面就是我如何把配置武装起来,对抗执行功能障碍的过程。
Phase 0 – 基础设施
在动手写任何 Lisp 代码之前,我必须先解决另一个问题:在设备之间同步我的笔记。
我的大脑 L1 缓存非常小。如果我在厨房里灵光一现,但我的待办事项列表在另一个房间的台式机上,“延迟”(以及心理障碍)就足以让任务消失。等我回到台式机时,情境已经丢失。
我过去尝试过几种方案:
- 基于手机的记事应用——在设备之间分割笔记,效果不佳。
- 个人 Discord 服务器——很快变得难以维护且无法搜索。
我需要的是一个唯一可信来源,能够在任何地方零摩擦地访问。
设备
- 台式机
- 笔记本电脑
- 手机(使用 Orgzly 应用来编辑 Org 模式)
…以及你现在正在阅读本文的第四台设备:我的 VPS(未来的家庭实验室)。
方案:Syncthing
我选择了 Syncthing。在拥有 VPS 之前,我曾考虑在设备之间直接使用 Syncthing,但这要求所有设备同时在线——我的笔记本和台式机很少同时开机。VPS 充当“云”中心,即使台式机关闭,笔记本仍然可以从 VPS 同步笔记。
第 1 阶段 – “能量”指数
标准的效率建议告诉你按 截止日期 或 重要性 对任务进行排序。这对神经典型大脑效果很好。对我来说,20 条“重要”任务的列表看起来像一堵噪音墙,会立刻触发分析瘫痪。
我意识到我的瓶颈不是时间,而是 电量。
- 有些日子我的状态是 110 %。
- 有些日子我的状态是 10 %。
在低能量的日子里,看到一个大而耗能的任务会让我跳过 那个 任务——甚至整个列表。
解决方案
我修改了工作流,让每个任务都包含一个 ENERGY 属性。与其问 “什么时候到期?” 我改为问 “这会消耗我多少能量?”
我定义了三个能量等级:
| 级别 | 描述 |
|---|---|
| High | 复杂任务,通常需要深度专注 |
| Medium | 标准工作,例如回复邮件 |
| Low | 简单任务,例如清理文件或安排约会 |
Emacs 配置
;; Map priorities
(setq org-priority-highest ?A
org-priority-lowest ?C
org-priority-default ?B)
;; Colour‑code priorities
(setq org-priority-faces
'((?A :foreground "#ff6c6b" :weight bold)
(?B :foreground "#98be65")
(?C :foreground "#51afef")))
;; Define energy levels (global property)
(setq org-global-properties
'(("ENERGY_ALL" . "Low Medium High")))
;; Colour‑code TODO states
(setq org-todo-keyword-faces
'(("TODO" :foreground "#51afef" :weight bold)
("DONE" :foreground "#98be65" :weight bold)
("WAIT" :foreground "#da8548")))
议程概览
真正的魔法发生在议程概览(SPC o A x)中。我创建了自定义命令,根据能量消耗对任务进行排序。
当我坐下来查看议程时,我会检查自己的内部电池:
- 疲惫? → “快速收获”(Low 能量)
- 专注? → “深度工作”(High 能量)
这可以防止负面螺旋;即使在糟糕的一天,我通常也能清理一些 “Low Energy” 项目,保持前进。
(setq org-agenda-custom-commands
'(("x" "Overview"
((tags-todo "PRIORITY=\"A\"+ENERGY=\"Low\""
((org-agenda-overriding-header
"Quick Wins (High Impact, Low Energy)")))
(tags-todo "PRIORITY=\"A\"+ENERGY=\"High\""
((org-agenda-overriding-header
"Deep Work (Focus Required)")))
(tags-todo "PRIORITY=\"A\"+ENERGY=\"Medium\""
((org-agenda-overriding-header
"High Priority (Medium Energy)")))))))
Phase 2 – 降低输入延迟
忘记(上下文中的)想法是一场持续的斗争。打开文件浏览器、定位到正确的文件并把所有内容敲进去,摩擦太大。我需要一种能够随时捕捉想法、任务和待办的方式。
策略 1 – org-capture
无论我在做什么,都可以使用自定义快捷键启动 emacsclient(在 KDE Plasma 上是 Ctrl+Alt+e),然后在 Emacs 中按 SPC X。会弹出一个自定义捕获窗口,询问我要捕获的思考类型。
示例:选择一个待办(t)。随后系统会提示我填写五项关键信息:
- 优先级
- 任务名称
- 标签(自由格式)
- 截止日期
- 能量水平
这迫使我在捕获时就分配优先级和能量水平,使工作流保持紧凑且低延迟。
(原文的其余部分继续介绍其他策略和细化;其精神保持不变。)
执行功能即代码 – Doom Emacs + ADHD
第 2 阶段 – 捕获模板
我需要一种快速添加任务而不打断思路的方法。下面的 org-capture 模板让我可以把任务、想法或项目直接放入相应的文件,并自动填入正确的元数据(优先级、能量等级、截止日期等)。
(setq org-capture-templates
'(("t" "Todo" entry (file+headline "~/org/inbox.org" "Tasks")
"* TODO [#%^{Priority|A|B|C}] %^{Task Name} %^g\nDEADLINE: %^t\n:PROPERTIES:\n:ENERGY: %^{Energy?|Low|Medium|High}\n:END:\n")
("i" "Idea/Note" entry (file+headline "~/org/inbox.org" "Notes")
"* %?\n%U\n")
("p" "Project Task" entry (file+headline "~/org/projects.org" "Projects")
"* TODO [#%^{Priority|A|B|C}] %^{Task Name} [/]\nDEADLINE: %^t\n:PROPERTIES:\n:ENERGY: %^{Energy?|Low|Medium|High}\n:END:\n")))
进入全屏模式 → 退出全屏模式
第 3 阶段 – 视觉微调
我容易出现数字感官过载,所以保持 UI 极简。我使用 Catppuccin(mocha)主题,因为它对比度低且视觉舒适。最大的视觉提升来自字体:
- 等宽字体(
Fira Code)用于代码块。 - 可变宽字体(
Fira Sans)用于普通文本,以区分“人类语言”和“计算机语言”,降低认知负荷。
;; Fonts
(setq doom-font (font-spec :family "Fira Code" :size 16 :weight 'semi-light)
doom-variable-pitch-font (font-spec :family "Fira Sans" :size 17))
;; UI
(setq doom-theme 'catppuccin)
(setq display-line-numbers-type t) ;; Set to nil if you prefer no line numbers
进入全屏模式 → 退出全屏模式
我还使用 Zen mode 将文本居中,并在需要深度专注时隐藏 mode‑line(例如撰写本文时)。
Conclusion – “Works on My Machine!”
这些调整并不能“根治” ADHD,仍然会有忽视日程或无法完成低能量任务的日子。不过,由于所有内容都保存在通过 Syncthing 同步的纯文本文件中,系统具备弹性且不带评判性。休息后回来时,所有数据仍然在那儿等着我。
我不再与大脑的操作系统硬碰硬,而是开始编写软件补丁。21 年来,我第一次感觉自己真的拥有了 root access。
欢迎随意偷走我的配置!我的 Doom Emacs 点文件位于我的 Nix 配置仓库中。
感谢阅读!我计划写一篇后续文章,介绍我如何以类似的方式使用 org-roam——敬请期待。
如果你有任何问题或需要帮助,可以在主页上找到我的 Discord 链接。随时乐意提供帮助! ;3
Read the original article on my blog here.