Read Write Compute

McPhee 写作法和 Emacs (Howm)

三月 12, 2026
Tags: #writing #Emacs #Howm

The McPhee Method

HN Discussion: https://news.ycombinator.com/item?id=45013535

McPhee 写作法的简单总结

  1. 收集笔记

    写作者先做完写作需要的全部"报道"工作。"报道"在这里是资料搜集和研究过程的统称,包括阅读、采访、现场考察等等一系列工作。McPhee(以下M)会用大量时间来做这个工作,而且是用参与式观察来搜集信息。

    Good facts are rare, so you must give yourself enough time to acquire them.

    这阶段的多种信息,都要保存到笔记中。有的是用自己的话,书中的话则原样摘录,采访录音转成文字后也放进笔记里。这一步不需要做任何组织整理工作。有人用一个巨大的 Markdown 文件来保存这些笔记。

    这个过程中,我们实际上在告诉自己什么是重要(noteworthy)的。当前的写作课题会让你自然地注意到各种和它有联系的事物和想法。一些作家在这一步积累的笔记就会达到整本书的文字量。

  2. 归档

    在这个阶段,McPhee 会把所有笔记都读一遍。这个过程中他可能会产生一些新的想法,同样会记录在新的笔记中,并和所有这个选题下的笔记保存在一起。阅读笔记不再让他产生新的想法时,他会试着写出文稿的前几段,找到文章的组织角度。

  3. 整理

    关于如何组织材料和文章的想法会开始浮现。最后的文章将由章节、场景和重要场面(set pieces)组成。McPhee 会给这些组成元素分别编码,并在笔记卡片上标注这些编码,说明它们的用处。除了把笔记放进预设的框架里,有时候也可能发现一些笔记可以组成一个意义单元。

    McPhee 对所有整理到各个主题里的笔记还会再用同样的方式整理一遍:重读笔记,感受它们的节奏,安排顺序,标注编码。

    上面这两步可以大大减轻写作的心理负担,因为文章的立意不需要作者预先设定,而是在阅读整理笔记的过程中逐渐发现的。

    这个过程完成后,文稿的两层结构就随着笔记的定位而初步确定了。上面较粗的一层是文章的章节结构,下面较细的一层是叙事的起伏节奏。

  4. 撰稿

    材料准备和整理完毕后,撰稿的过程就会顺畅许多。不过对于一个场景或者一段表述,完整、流畅的句子也可能要花很多工夫才能打磨好。这时可以用"伪写"的办法,先把大致要表达的意思写在方括号【】里,回头再参照相应的笔记内容来措辞。

    感觉这个很像 HtDP 和(似乎是)Think Python 里教的构造函数的方法:先把函数的输入输出想好,再用注释的形式写出实现步骤,然后逐一写出真正的实现。

    So much of writing is managing your own emotions. The virtue of "pseudowriting" is that it helps you preserve hope for as long as possible---hope that what you will eventually put in place of those square brackets will be good. Hope keeps you coming back: it is more pleasant and low-stakes to pseudowrite than to fix actual language into the draft; and it is less daunting to return to a document where it feels like all that's left is for you to fill in some blanks. Do that enough times and you will, in fact, end up with something you can read top to bottom.

    If you're interested in the McPhee method, you should start by reading William L. Howarth's introduction to The John McPhee Reader, then the McPhee articles themselves, and finally McPhee's own Draft No. 4: On the Writing Process.

Org-mode

这篇博客的作者 James Somers 写了一个 Org-mode 的小扩展,方便把不同 heading 中的笔记 refile 到用字母缩写编码的章节"bucket"中。除此以外,Org-mode 本身提供的各种功能似乎都让它非常适合用于 McPhee 写作法。在不同的 heading 间移动本来就是 Org-mode 最常用的操作之一,调整内容的顺序更是它的绝技。

有心折腾的话,还可以让 capture 流程更自动化一些,省掉很多复制粘贴的操作。

之前我觉得一条笔记不能同时出现在两个 heading 下是个功能缺陷,但仔细一想,在一篇文章里本来就应该避免一件事情说两次,这个限制反而能迫使我想清楚应该怎样使用材料。相比 Lem、TiddlyWiki、Notion 等这反倒成了优点。

Howm

对于前两个步骤,即快速搜集信息而不加组织,以及把笔记放入不同的"bucket"中,howm 对于懒得折腾的人来说更有优势。各种缩写标签可以用 goto link 来实现,而 from link 和关键词系统可以用来说明各个 bucket 具体是什么意思。

Howm 还支持多级 menu,我们可以在 C-c , , 呼出的菜单中添加到次级菜单的链接,把某个写作计划下的笔记按照多种方式列出来。理论上说,也可以按照特定的排序原则排列。

小结

McPhee 写作法相当值得一试。目前看起来,还是 Org-mode 方式最可行。每个写作项目可以放在一个 Org-mode 文件中,从笔记到终稿都可以保存在里面。

但用 Howm 来做最初的笔记工作也不错,如果 tag 只打到项目层面的话,就不会有太多名字冲突的问题。第二步本来也要把笔记通读一遍并做取舍,可以在这一步再把要用的笔记放进 Org-mode 文件里。

另外,结合 ox-hugo 或 orginfo.js 这类包的话,也可能实现从 Org-mode 输出一个完整的电子出版物的效果。