Vscode系列-Foam 官方文档翻译

  • Foam 官方文档翻译

  • 更新

    1
    2
    20.09.08 初始化
    20.09.11 更新部分内容

导语

越发感到单纯 markdown + 文件夹不能满足笔记的需要.同一类型的知识彼此交叉,一个实例往往牵扯到多个知识点,单纯标签已经不够了.

Matrix 圆桌 | 网状结构笔记工具是一阵风吗? - 少数派 从这里打开了一扇新大门,之前对笔记应用的印象还停留在 onenote / Evernote. 双向链接深得我心.

介于一直是 vscode 的重度用户,而且同样支持 markdown 的 Obsidian 并不是很完善(但是开发很活跃),选择了 foam.

foam 是一个 vscode 拓展,实现了绘制双向链接图,自动管理等.网上 foam 如何使用,中文的内容还是很少,这一篇是 foam 的部分文档翻译,内容来源于 Foam | A personal knowledge management and sharing system for VSCode.

这里暂时只翻译了部分内容,有删减,图片引用全部指向源地址.

初始化 Foam 仓库

foam 官方示例仓库 foam-template.

你可以选择把笔记托管到 Github 私库,或者自己的本地服务器.只需要克隆示例仓库即可.

克隆后,在 vscode 建一个新的的工作区,打开示例仓库,此时需要安装推荐的拓展.(直接下载 zip 可能没有 .vscode 隐藏文件夹)

剩下是其他的插件配置了,具体过程可以参考 Foam + vscode 打造个人知识库 - 哔哩哔哩

发现

浏览笔记的链接图可以使用 Cmd + Shift + P (Ctrl + Shift + P for Windows),输入 Show graph.

Graph

反向链接(Backlinking): 使用链接时,你可以在 vscode 的资源管理器查看到所有的反向链接(Backlinking)

  • 运行 Cmd + Shift + P (Ctrl + Shift + P Windows) 输入 backlinks 选择 焦点在 Backlinks 视图上.

  • 尽量使 Backlinks 窗格可见,以发现你想法之间的联系.

  • 如果你愿意还可以把 Backlinks 更为突出,详情见 Make Backlinks More Prominent

    Make Backlinks More Prominent

  • 其他关于 Backlinking 的计划,详情见路线图.

  • Simulating Unlinked references (stub)

组织

使用反向链接可以将链接组织成列表.

写作

双向链接

双向链接可以连接文档和 url,foam 提供了双向链接的自动补全.

  • 所谓的链接实际上是 [[文件名]],可以让你直接导航到具体的 md 文件.
    • 链接内的文件名有要求.例如 lower-dash-case.md,链接中应该是 [[lower-dash-case]] 而不是 [[Lower Dash Case]].其他更多要求参见下一小节.
  • cmd + click (ctrl + click windows) 可以快速导航到对应文件.(F12 也可以,如果不爽在 文件 -> 首选项 -> 键盘快捷方式搜索 editor.action.revealDefinition 重新绑定)
  • 当文件不存在时,会自动创建对应的 文件名.md.
  • foam 文件命名要求:(因此 foam 还在不断更新中)
    • 全部小写
    • 没有空格、标点符号、特殊字符.
    • 使用破折号作为单词分割.
    • .md 为文件结尾.
    • 正确的命名: roadmap.md foam-file-format.md f-f-f-f-falling.md
    • 错误的命名: Roadmap.md(大写) foam file format.md (有空格) f-f-f-f-falling!.md(特殊字符)

日报

foam 可以快速创建每日报录,Cmd + Shift + P (Ctrl + Shift + P Windows) 输入选择 Foam: Open Daily Note,foam 会在当前工作区的根目录生成一个 yyyy-mm-dd.md 文件,如果文件已存在,会打开对应文件.

默认快捷键是 alt + d

配置: 可以在 foam 的配置项中自定义文件名称和生成路径等.

  • “foam.openDailyNote.directory”: “journal”: 生成文件的目录
  • “foam.openDailyNote.filenameFormat”: “‘daily-note’-yyyy-mm-dd”: 生成文件名的格式
  • “foam.openDailyNote.fileExtension”: “mdx”: 生成文件的文件类型
  • “foam.openDailyNote.titleFormat”: “‘Journal Entry, ‘ dddd, mmmm d”: 文件的抬头.
  • 例子: 如上的配置,生成文件是 journal/note-2020-07-25.mdx,文件抬头是 Journal Entry, Sunday, July 25.

在未来,foam 将会提供更多日报的新格式,新特性.

如果你想在进入 foam 工作区时直接打开日报(这一特性未来会支持),在 .vscode/settings.json 文件配置

1
2
3
4
5
6
7
"auto-run-command.rules": [
{
"condition": "hasFile: .vscode/foam.json",
"command": "foam-vscode.open-daily-note",
"message": "Have a nice day!"
}
],

周报/月报,需要安装另外的拓展程序 note-macros.具体详情见 Custom Note Macros.

图表绘制

官方推荐了两种在 markdown 中绘制图表的方法.

Mermaid

  • Mermaid 并不会在 github pages 中已发布的 foam 中呈现,这里需要你使用另外的方式来生成静态网页.

Draw.io

  • Draw.io 没有上面的限制.
  • 两者使用上相似.

使用 Draw.io

  • 安装 Draw.io 拓展
  • 创建新的 *.drawio.svg or *.drawio.png 文件.
  • 开始绘制你的图表.
  • 最后在 md 文件中引用.例子: My Diagram

url 自动转换

在 markdown 中引用 url 的格式是 [web title](url).

这个步骤通常是手动完成,但是有拓展可以代劳.

要求已经安装了 foam 的推荐拓展 markdown-link-expander.

选中已经粘贴到 md 的 url, ctrl + shift + P,选择 Expand URL to Markdown.之后自动完成.

效果图

自定义预览样式

这个功能属于 vsc 自带,在 setting.json -> markdown.styles.

foam 的示例仓库中有定制的 Style.css,在设置中启用.

1
2
3
{
"markdown.styles": ["Style.css"]
}

剪贴板粘贴图片

曾经为了这个功能还写了个 python 脚本.

foam 推荐了两个拓展 Paste Imagemarkdown-image,但是后者不支持 MDX(貌似是支持 jsx 与 markdown 混编的一种格式),这里用的是 Paste Image.

Todo 列表

这个特性是 Markdown All-in-One 提供的,具体使用在 foam 例程的 todo.md 中.

版本控制

vscode + git = 无敌,不再表了.

发布

这一节请参考源文档吧,发布我一般都是搬到 Blog.

其他

略..因为 foam 还在迅速发展中,而且 foam 是由社区驱动,一些问题还没有很好的解决.比如块引用等.

结语

foam 还是提供了一个较为不错的基于 vsc 的笔记记录,虽然暂时并非很完善.如果从 0 开始积累的笔记,可以尝试一下.