作为程序员,学习肯定经常的,学到的知识,如果不记下来,过不了多久就忘了,还有,工作中你灵感迸发的好代码,你折腾了很久才实现的好代码,你如果不记录下来,过段时间,你都不记得源文件放哪了,下次还得重新折腾,没错,你需要第二大脑,这就是今天要介绍的主角 Obsidian 笔记。

为什么是它

认真记过笔记的人都知道,笔记种类有很多种,我用过有道,印象,为知,Typora,Notion,语雀,思源,logseq,最终选择了 Obsidian,因为它支持多平台,支持 Markdown,支持代码高亮,支持双链,支持白板和日记,支持语音输入,本地存储,也可以通过插件和网盘等同步,插件丰富,强大的社区支持。只有你想不到的,没有它做不到的,即使做不到,还可以用插件弥补嘛。诚然,这些功能其他笔记软件也可能有,但 Obsidian 有着丰富的插件,是其他笔记所不具备的,即使都不能满足,你还能自己开发,程序员开发个小插件还不是小 Case 嘛。

最重要的是你的文档可以自己掌控,其他很多软件,笔记都是保存到服务器上,而且是自定义格式,安全问题不提,哪天服务器挂了,你辛辛苦苦记录的文档就烟消云散了,而 Obsidian 不用担心这些,你的文档在你自己的电脑上,在你自己的网盘上,你高兴放哪放哪,而且它是开放格式的 Markdown 存储,哪怕 Obsidian 不能用了,你用其他软件也可以照常打开使用嘛。

最后,让我选择它的还有一个原因,可以掌控自己的笔记,其他软件,你用着不爽,想自定义很难,Obsidian 不一样,它从主题样式,到快捷键,到笔记功能,你几乎可以随心所欲的掌控,如果你愿意开发插件,那更是无所不能了,如果你懒,众多的插件也几乎能帮你实现你想要的大多数功能。

甚至她还可以支持把 vscode 的编辑器嵌入到笔记写代码,而且它的代码还可以通过插件直接运行,支持多语言,哈哈哈。

另外,它还能通过插件支持标注,分享,剪藏,发布或生成博客,数据加密,与云盘或服务器同步等。

先睹为快:

An image to describe post Obsidian最适合程序员的笔记软件

软件下载

官方地址:Obsidian - Sharpen your thinking

软件使用

软件安装完成后建议设置“文件与链接”里的附件存放目录,推荐放到指定文件夹,附件文件夹路径是相对于你的笔记仓库的相对路径。

An image to describe post Obsidian最适合程序员的笔记软件

Markdown 语法支持,请参考官方文档:格式化笔记 - Obsidian 中文帮助 - Obsidian Publish

常用插件

核心插件

关系图谱: 类似标签云,只不过是文章的关联关系图,这可是 Obsidian 主打的卖点,方便查看哪些文章是你知识的核心。

出链和入链: 文章被引用和引文的文章列表,也是 obsidian 的卖点。

文档属性: 是 yaml 格式的 frontmatter 信息,是文章的特征描述,有些软件通过这些信息进行文件管理。

文件恢复: 这个功能开启后,会对 Markdown 文档产生快照,可以恢复历史数据。

斜杠命令: 在编辑器中输入 / 即可触发命令面板,方便快捷选择命令。

第三方插件介绍

Obsidian 的第三方插件都是开源的,你不仅可以方便的使用,不满意还可以自己调整。

由于 GitHub 有时访问不稳定,建议使用 Watt Toolkit 进行加速。

Bartender - 首先推荐这个插件,因为这个插件可以对分类进行拖动和排序,非常方便。但这个插件并未发布到插件市场,下载地址:Site Unreachable,由于这个插件在 1.5.8 下面有个 bug,导致左侧分类空白,请到这里下载已解决的安装包 issues

Remotely Save - 多端同步插件,支持全平台,第三方服务支持 Amazon S3 系列,Dropbox,One Drive,Webdav 等。

Quick Explorer - 快速浏览和导航笔记文件及文件夹结构的插件,类似于面包屑功能。

QuickAdd - 快速创建新笔记或添加内容至现有笔记,简化工作流。

RecentFiles - 显示最近打开过的文件列表,方便快速访问。

Local images - 把远程图片下载到本地等。

Advanced URI - 提供高级 URI 解析和跳转功能,在其他软件中可以打开或编辑 obsidian 里的笔记等,很多插件依赖它,建议安装。

Templater - 创建自定义模板,便于快速新建标准化格式的笔记,支持 js 语法,功能特别强大。

Better Export PDF - 导出的 PDF 带目录,比官方的更好。

Better Word Count - 提供更精确的字数统计,支持选中文本统计字数。

BRAT - 如果你不知道怎样手动安装插件,用这个插件只需要输入 github 的作者和项目名即可下载。

Calendar - 在 Obsidian 中集成日历视图,方便查看和关联时间相关的笔记。

Clear Unused Images - 清理不再被引用的图片资源。

Commander - 这个功能非常强大,可以增加侧边栏和顶部,状态栏,右键菜单等菜单项,还支持宏命令,批量执行命令。

Timeline - 增加时间线视图功能。

TinyPNG Image - 对图片进行压缩优化,减小文件大小。

Webpage HTML Export - 将笔记内容以 HTML 形式导出成网页,然后可以发布到博客,类似于 hexo 等。

Status Bar Pomodoro Timer - 整合番茄钟计时器在状态栏上,帮助用户执行番茄工作法。

Style Settings - 如果你使用别人的主题,使用这个插件可以便捷的开关某些样式。

MySnippets - 如果你有自定义的代码片段,用这个插件方便修改和开关代码片段。

Surfing - 让你的笔记像浏览器一样,可以浏览网页。

SyncFTP - 把你的笔记同步到 ftp 上。

Self-hosted LiveSync - 把你的笔记同步到你自己的服务器上。

Tag Wrangler - 更好地管理和组织标签系统,批量查看和修改标签。

RunJS - 直接在 Obsidian 中运行 JavaScript 代码,可以调用 node 和 obsidian api。

Share as Gist - 把你的代码片段分享到 github Gist。

Just Share Please - 方便分享笔记到 web 平台发给别人分享。

Quail - 一个博客平台,允许你的笔记直接分享到这个笔记平台上,这个平台简洁漂亮,速度快,推荐。

Obsidian shared to Notion - 把你的笔记分享到Notion。

Emoji ToolBar - 添加表情符号工具栏,方便插入表情符号。

Excalidraw - 集成 Excalidraw 绘图工具,支持创建手绘风格流程图等。

ExecuteCode - 在笔记中执行代码片段并展示结果。

File Color - 给你的笔记标题添加颜色,更醒目,方便查看。

File explorer Note count - 显示你的文件夹内的笔记数量。

Custom Frames - 内嵌 webkit 浏览器,可以把一些网站内嵌到笔记内当做笔记自己的面板。

Dataview - 数据统计和可视化,支持 js 和类似 SQL 的语法筛选。

Easy Typing - 自动转换中文和英文标点符号格式,当你在中文输入法下,按两次中文标点或符号变成英文半角格式。

Editing ToolBar - 可视化编辑器工具条。

Kanban - 生成支持看板功能的笔记,工作计划管理很有用。

Hot Reload - 热加载,如果你打算开发插件,很有用,你修改了代码,界面会立即生效。

Hover Editor - 把你的笔记或面板悬浮起来,方便使用。

Html Server - 如果你在公司局域网内,想把笔记分享给同事看,这个插件很有用,它可以在你笔记里启动一个小型 web 服务器,然后把链接发给你同事看,你的改动能实时在页面上看到变化,很方便。

Iconize - 给你的文件夹加上漂亮的图标。

Multi-Column Markdown - 支持多列布局,如果你用于功能对比,用这个插件非常方便,比如我常用这个对比翻译,左边是原文,右边是译文。

Image auto upload Plugin - 它可以配合 PicGo 上传图片到图床。

Image Upload Toolkit - 自动上传图片到云端存储(例如阿里云 OSS 等)。

MantouAI - 通义千问插件,如摘要生成、关键词提取,文章总结,向它提问等。

obsidian echarts - 集成 ECharts 库,实现复杂的数据可视化图表。

Obsidian Memos - 创建和管理备忘录类的小型便签,类似浮墨。

Marp Slides - 将 Markdown 转换为幻灯片演示文稿,只需要用分割线分割你的内容即可。

Meld Encrypt - 把你的笔记加密,通常用于敏感数据,如账号等。

Inline Encrypter - 提供行内加密功能,文本的某一行加密。

Mind Map - 将笔记列表内容转换为思维导图。

Multi Tag - 批量给多个笔记添加多个标签。

Icon ShortCodes - 输入双冒号,快速插入各种图标。

Emo 如果你想把你的图片传到 GitHub 并用配合 jsdelivr 做图床,这个插件很有用。

Auto Link Title - 把链接直接转换为带有标题的链接,标题自动从网站抓取。

Shell commands - 快速执行 shell 脚本,可以调用本地命令打开外部应用或执行脚本等。

Various Complements - 提供了一些功能增强自动填充能力,可以为用户提供更好的使用体验和工作效率。

Reminder - 可以为你的任务增加提醒,并且可以联动的系统,在系统通知区域显示待办提醒。

Pandoc Plguin - 增加将笔记导出各种文件格式的能力例如 DOCX、ePub 和 PDF。此插件不能独立运行,需要配合 Pandoc 额外程序才可以。

Periodic Notes - 创建/管理您的每日、每周、每月、季度以及年度笔记。

Image Converter - 快速缩放图片大小。

Image Insert - 从 Unsplash 等获取图片并插入到笔记中。

Omnisearch - 不仅可以搜索文档,还可以搜索 pdf 和图片,如果你有搜索 pdf 和图片的需求很有用。

Admonition - Obsidian 的块样式,你可以自己定义各种增强块样式,比如警告,笔记,提醒等,由于 Obsidian 0.14 版本内置了 callout 功能,admontion 插件 9(简称 AD 插件) 9.0 以后已经演变成了 callout 辅助工具。

Folder Note - 可以把你的文件夹变成笔记,可以在里面做一些对文件夹的描述或汇总等。

更多插件介绍:Airtable - OB社区插件汇总 - Johnny整理 - 每周更新 - B站 Johnny学

使用心得

关于工作模式

有人喜欢 logseq 的那种工作模式,打开即写,轻记录,obsidian 里也可以开启打开时启动笔记模式,实现 logseq 的打开即写模式,我倒是喜欢目录模式,想要记日记直接快捷键新建日记即可,毕竟我使用的场景,记日记不多,快捷键可以自己设定。

关于写笔记,有人吐槽分类的弊端,每次写作要考虑分类存放,造成负担,我通常用快捷键 ctrl+n 新建笔记,写完了再考虑标题和选择分类,选择分类可以用快捷键也可以用命令等,我是把分类生成一个按钮放到编辑器的顶部,这个功能可以通过 commander 插件实现。这样写作不会被打扰思路,一气呵成,写完再考虑分类,标签什么的,降低分类存放负担。当然你也可以新建个草稿箱,新建文本都放到草稿箱里,我习惯放到根目录,一是明显,强迫自己及时处理,不要积累半成品,二是对有些新建笔记类的插件,剪藏插件等支持良好。

关于分类,有人认为分类没必要,是负担,我深以为然,我认为如果能做到分类和标签通用就好了,就像 WordPress 那样,可以同时选择多个分类,这样类似于标签功能,一个笔记可以属于多个分类,避免纠结分类选择问题。目前还没找到比较好的这方面的插件或者标签能实现类似这种功能,暂且使用目录。我的原则是,你第一眼就想到的,或是第一个想到的它该属于什么分类就放到哪个目录,然后还有其他也沾边的就加标签补充。

关于折腾,有些人喜欢思源那种功能俱全的笔记,避免折腾,沉下心思记笔记(但牺牲了思源笔记存储格式的开放性)。确实是,由于 obsidian 的插件多,很多功能依赖插件实现,就导致刚入门者,不停折腾的现象,这违背了记笔记的初衷。所以建议,不要过于折腾笔记,满足需要即可,核心是记笔记,等实在不好用时,先找第三方插件,都不满足再自己实现。

关于分享

分享笔记我推荐,Quail 插件,Notion 插件、html server 插件和 Just Share Please,分别适应不同的场景,Just Share Please,如果你有服务器也可以自己搭建分享接口。

Web Export HTML,这个插件可以生成完整的博客网站,对 obsidian 自定义语法支持粒度良好,如果你打算生成博客推荐这个插件。

Quail 插件的使用可以参考 obsidian分享文章到Quail博客 - 经验分享 - Obsidian 中文论坛

关于剪藏

关于剪藏插件也比较多,我推荐 obsidian cliper 和 Markdownload 插件(浏览器插件)。

但,我常用的是简悦插件+shell 脚本,这个是我自己写的脚本监控简悦 markdown 下载文件,然后添加到笔记中,简悦导出的格式比较完整,而且有了 shell 脚本我可以自由的选择添加到哪个目录,非常方便。如果你感兴趣,可以查看 Mac下fswatch+shell实现简悦导出markdown到obsidian - 经验分享 - Obsidian 中文论坛

关于灵感记录

灵感记录通常使用 QuickAdd 插件实现,但这种实现方式,通常只能在 obsidian 笔记内使用,我写了一个通过 utools 和 shell 脚本搭配可以在 obsidian 软件外使用的方式,可以参考 uTools和obsidian联动,高效记录您的灵感闪现 - 经验分享 - Obsidian 中文论坛,建议使用最下面更新的版本。

关于同步

关于同步方案也很多,每种都有自己的优势,我比较了很多种方案,最后选择 RemotelySave+InfiniCloud 的方式,这种方式比较简单而且我认为相对比较安全。详情请查看 RemotelySave+InfiniCloud最简单的多端同步方案实践 - 经验分享 - Obsidian 中文论坛

关于图床

为什么使用图床?一是,用图床节省笔记本地空间和同步空间,加快同步速度。二是,图床对插件和其他编辑软件的支持良好,对导出其他格式也支持良好。

图床方式有很多种,可以参考我上面对于图片类插件的介绍,我理想中的图床方案是,笔记显示远程图片,但本地要留存一份本地图标,必要时,可以批量替换图片地址,让图片正常显示。甚至可以本地和远程相互切换。国内我认为笔记好的图床方案是 jsdelivr+github,但因 github 有时不稳定,我想到了先推送到 gitee 再通过 gitee 推送到 github 的方案,也写了脚本实现,但由于 obsidian 图片缓存的问题,如果链接替换早了,图片会显示不了,即使远程图片上传完毕,所以,必须图片上传完成之后再替换,但由于 gitee+github 中间环节上传图片的结果无法感知,所以暂时搁浅,或许以后考虑直接上传 github 方案,但这种又不稳定,目前上传 github 的插件经常出现替换图片过早问题。

所以我想,不如图片暂存本地,然后用 TinyPNG 插件压缩,必要时,再直接用 gitt 推送到 github,需要时再替换本地图片为远程图片,目前暂时采用这种方式。

插件开发

Developer Documentation

Obsidian 插件开发中文文档

官方社区

Obsidian Forum

Obsidian 中文论坛 - Obsidian 知识管理 笔记