article_image

卡片笔记,工具如其名,最早确实是用纸质卡片——早期是纸片“slip”,后来是索引卡“Index Card”——写成的,很多美妙的属性承载于物理载体上,在转向卡片笔记软件的过程中,其魔力折损许多。

最明显者,即失去了空间属性。在使用索引卡做笔记时,你可以把一系列零碎的语句摊在桌面上,随意调换顺序,把相关笔记放在一起,或者按计划的论述顺序排列它们。在虚构写作领域,顶级小说家纳博科夫称自己是在 “拼” 小说;在学术圈,从莱布尼兹到近代的瓦尔堡,不少欧洲大陆学者也喜欢在大桌子或者大黑板上铺满纸片。

然而,从纸笔笔记升华到笔记软件的过程中,纸张变成了磁盘,墨迹化为了比特,卡片的空间属性随着物理载体消失了。这就像把一朵玫瑰压制成干花,不可避免地丢失了一部分信息。

但这些逸散的信息并非难以捉摸的玄学元素,通过适当的模拟以及恰当的自动化,我们可以找回纸笔卡片的一部分魔力,同时又不至于陷入拟物化的东施效颦之中。

Alt text
用便笺实践字面意义上的“卡片笔记”

笔记软件丢了什么:空间属性

This is why experienced programmers have big multiple screens……it's like when you make an arch; it's not just piling up the bricks, you have to put this whole scaffolding up. You have to hold everything together until you get the keystone in place. ——Alan Kay on the context and catalysts of personal computing

绝大多数笔记软件均为线性,即遍主流软件都配备了可视化图谱,二维平面也并非其常态。换言之,它们只在一个维度上展开,缺乏空间属性——而平面空间,恰恰是摆弄纸质卡片时最自然的背景。

早在卡片笔记或双向链接概念为众人所周知之前,我已经使用了很多年的第一代卡片笔记软件,先是 nvAlt,后来是 FSNotes。它们和现代软件主要的区别在于没有可视化选项,我只能看见纯文本界面;用一个我已经用了很多次的比喻,这就像不使用倒车雷达,只用后视镜和直觉去停车。

Alt text
线性排列的笔记

不过,这种近乎于心流的体验,只会出现在业已熟悉的领域,一旦进入陌生环境,就容易找不到方向。我闲下来时喜读推理小说,但毕竟不是专业人士,所读难以连点成线。Obsidian 的可视化网络提供了另一个视角,显示不同作品之间的关联,甚至可以调整焦距,显示一度、两度乃至更多的节点,找出“文脉”——作品之间的关系网络。

Alt text
寻找作品之间的联系

可惜,可视化网络只是一种观看的途径,却不能直接编辑。回想以前在图书馆手抄笔记的日子,回宿舍后掏出兜里的细碎卡片或便利贴,哗啦一把铺在竹席上、或贴在墙上,然后慢慢摆弄。不需要高科技,归类、分组、排序、取舍等操作都在空间中自然展开,秩序随之生长。

Alt text
我曾经在公寓墙面上贴满便利贴

这样看来,卡片笔记软件的两座重镇————Obsidian 和 Logseq——几乎同时发布了画布功能,完全是笔记发展的逻辑结果。关于软件的讨论,我会放在下一节。在此,只需看到:笔记软件曾从单向度切入,带来的速度提升无法抹杀,我也无意返古;但是,至少在散漫的信息收集阶段,或者摆开架势干重活时,不妨回到类似纸质卡片的媒介,在空间中不受拘束地完成工作。

平面、视觉、空间、活动、感受。

用便笺在屏幕上模拟实体卡片

模仿纸质卡片的软件并不少,但就像 Liquid Text 吐槽电子书阅读器时所说的那样,多数工具在模仿中学到了纸张的缺点,而抓不住其优点——盖纸张的魔力,并不寄生在充满玄学的红蓝墨水表象中,而是深深印在其物理属性中;而属性必然与任务环境相适应。

讨论工具永远不可能避开工具的使用背景。有必要引入“电子卡片”的环节主要有二:第一,在笔记写好之后重新排列,以期从中发现新视角。我以前写过不少关于任务清单的笔记,后来选修情报学课程,发现可以在书目的语境中重新讨论清单,原有的笔记遂派上新用场。此时用画布工具最好,我已经另行撰文

第二,则是在筚路蓝缕之时提供探索方式,随意摆放零碎的文字片段,先不要定死联系和秩序,多尝试几种摆放和排列方式。同时,最好有办法对接后续环节,比如直接把草稿导出为 Markdown 文件。本文重点讨论的,也是草创时期的笔记方法与工具。

一个平面,几个单元,无限组合。

大多数软件其实不是做得不到位,而是忽视场景、过犹不及,要么陷入功能主义,要么就是在拟物化的道路上走得太远。1每个人对卡片的定义有所不同,对我来说,只需要最朴素的文字卡片,再加上一个宽敞的平面空间,这一切在原生便笺中已经足够好;在这一节中,我也会列出其他探索过的工具,供您比对、参考。

Alt text
不同桌面可以充当不同的便笺工作区

Obsidian 和 Logseq 等画布工具:我在给卡片笔记分类时,避而不谈 fleeting notes(队列笔记,或意译为临时笔记),因为至少在碎片收集阶段,我更倾向于使用视觉化工具,不好在传统卡片笔记软件的语境下谈。我曾辗转于 MarginNote,Scapple,Obsidian Canvas……这些工具恰恰败在其无限的空间属性上,空间太大了,以至于我不知道自己身处何处。理想情况下,屏幕就是极限,它就是整块黑板、整张桌面或整个世界,所有素材都在屏幕上一览无遗,所有卡片都在屏幕上触手可及,而不需要反复缩放、拖曳和调焦。

Scrivener:Scrivener 号称终极写作工具,据说村上春树就用它写小说。Scrivener 直接模拟了纸质索引卡的外观,你也确实可以在模拟的桌面上摆弄卡片。然而用力过猛的拟物化,在找回昔日回忆的同时,也把纸质卡片的渣滓一并搅起:例言之,Scrivener 中的卡片大小固定,折算一下大概是一块儿手机屏幕大小,能够容纳四五百字,未免太多——这已经不是卡片,而是半页纸了——事实上,索引卡的原型就用于摘抄大段原句,更适合在阅读的时候记录金句,用来组织零碎片段,则可能太耗费空间。

Kanbanier:我在应用商店中无意间遇到这家伙,它没有预先设置固定大小卡片,而是根据句子长短自动调整卡片尺寸。当我在里面写下长长短短的片段后,Kanbanier 看上去就像一个瀑布流,空间利用率很高,便于平铺展示。但问题也很明显,Kanbanier 中的卡片不能随意拖动摆放,我用了一段时间就发现和找寻纸笔卡片体验的初衷南辕北辙。

原生便笺:唯一能够打动我的,是 macOS 原生便笺:尺寸可以调到恰到好处,屏幕就是边界,一切不多不少。前文已经提到,当手头有一大堆零碎、不成型的片段时,我会怀念纸笔卡片,此为草稿阶段,所用的工具越轻越好,并且要能够无缝导出数据到后续环节。

便笺首先非常轻,不存在创建文件和保存的概念2,关掉软件时会自动保存,完全不用考虑手动存储;其次,它独立于 Obsidian 等主力笔记工具,可以管好自己那一亩三分地,别把草稿和正式笔记混在一起。而且,导出数据也不难,我写了一段自动化脚本,可以选取任意便笺并导出为 Markdown 格式。一旦草稿阶段结束,只需几秒钟,就能切换到主力卡片笔记软件。

摒弃半桶水的触觉,走向自动化

在视觉上,不少软件已经和纸质卡片相去不远;而软件模仿者与愿景之间的龃龉,其实在于触觉的缺失:摆弄纸质卡片时,我们捏起一角,不假思索,就能随意移动卡片;而在屏幕上,拖动窗口则需要小心翼翼、瞄准可以交互的位置,即遍在 iPad 上,也要考虑一下是短按、长按还是快速滑过。3

如果我丢了一颗衬衫扣子,除了把它找回来,也可以扯掉所有扣子,换成拉链。半吊子的触摸交互,不如全部丢掉,完全切换为键鼠操作:用启动器的方式切换卡片,而不是在满屏幕的卡片之间磨蹭来磨蹭去;用列表加快捷键导出便笺,而不是用 Apple Pencil 甩杂技一样画一个大圈。

搜索便笺并快速跳转

卡片增加之后,如何快速打开其中一张,就成了一个问题。

在摸索纸笔卡片的途中,我意识到纸质载体其实创造了一个平面空间,供你在其中自由活动,而其视觉效果和触觉交互都只是表象。察觉到空间更重要——如果还不是本质的话——后,我不再拘泥于纸笔的触摸体验,转而用**启动器(Launcher)**在卡片之间穿梭,而不需要点击卡片。

Alt text
检索便笺并快速跳转(Keyboard Maestro 版效果)

我模仿 Obsidian 打开笔记的形式打开便笺。运行下面的自动化脚本,即可列出当前所有便笺,点击任何一条,就能打开它,而不需要在茫茫窗口之中四处张望。这里还有一个 Keyboard Maestro 版本,更加方便,可以输入关键词并过滤笔记,效果也和 Obsidian 的跳转功能更接近。

tell application "System Events" to tell application process "Stickies"
    set nameList to name of every window
end tell

choose from list nameList with title "请选择要导出的页面"
set nameChoice to result as text

tell application "Stickies"
    activate
end tell

tell application "System Events" to tell application process "Stickies"
    click (first menu item whose name contains nameChoice) of menu "Window" of menu bar 1
end tell

选择便笺并批量导出

选择工具时,最好能够往后多看几步;在写下笔记的时候,就设想好未来如何导出它们。

零碎的笔记其实是正式笔记的种子,整理好后,完全可以直接导入笔记库;原子化原则贯穿整个笔记流程,零碎的便笺也不例外。多数画布工具的局限就在于此,它们很少将每张卡片视作独立实体,一般也不能逐个导出。

原生便笺本身也没有想到逐篇导出的功能,但它毕竟是原生应用,很容易写一段 AppleScript 脚本来提取文本。我受 miguelmota 启发,结合之前的经验写了一段脚本,可以列出当前所有便笺供您选择,导出任意或全部便笺为 Markdown 文件。

Alt text
选择并导出选中的便笺

默认情况下,脚本将每张便笺的第一行作为 Markdown 文件标题,全文作为 Markdown 文档内容。一般来说,排布、整理好便笺时,文字内容已经成熟,可以直接导出,放入专门的笔记软件。

注意:Markdown 文件默认保存到桌面上,另有需要的话,请在运行脚本前手动修改存储位置。
Alt text
运行脚本前请修改其中的笔记存储位置

脚本附在下方:

 --Credit: https://gist.github.com/miguelmota/ca368acb4420223bf80f8e18d5712a56

tell application "System Events"
    tell application process "Stickies"
        set nameList to name of every window
    end tell
end tell

choose from list nameList with title "请选择要导出的页面" with multiple selections allowed
if result is not false then
    set nameChoice to result
else
    set nameChoice to nameList
end if

tell application "System Events"
    tell application process "Stickies"
        set i to 0
        repeat with noteTitle in nameChoice
            try
                set noteBody to value of text area 1 of scroll area 1 of (window noteTitle)
                set noteTitle to text 1 thru -2 of noteTitle
                set notePath to "/Users/Min/Desktop/" & noteTitle & ".md"
                do shell script "echo " & quoted form of noteBody & " > " & quoted form of notePath
                set i to i + 1
            end try
        end repeat
    end tell
end tell

display notification "Export " & i & " Stickies" with title "Cards Exported :D" sound name "Frog"

小结

卡片笔记脱胎自纸质卡片,在数字化的过程中,有些工具完全丢了“卡片”的视觉效果,有些软件则模仿过度。总有一天,我们需要重新思考笔记工具,而不是依靠类比。

纸质卡片笔记或许有不少让人怀念的细节,但真正不可或缺的,是其与生俱来的空间感。我从这个角度切入,改造了原生便笺应用,找回了熟悉的工作空间(workspace)。

🛍 我撰写的付费栏目《信息管理,文件为本位的方案》正在 UNTAG 售卖,对本文话题有进一步讨论,欢迎选购。

🔗 付费栏目链接


  1. 话说回来,如杰克·古迪所言,禁欲的前提是大规模的放纵,正因为模仿纸质卡片的软件不在少数,我才能够挑挑拣拣。
  2. 这是 nvALT 及其前辈打开的突破口,后来也为 Drafts 所借鉴。
  3. 一般而言,它们分别对应了编辑、拖动和移动整个画布。

author_avatar

Lawyer, macOS/iOS Automation Amateur