ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Caveman笔记法:用Markdown+Vim+Git打造纯文本个人知识库

Caveman笔记法:用Markdown+Vim+Git打造纯文本个人知识库 从“caveman”这个热词开始说吧。这两年“回到穴居时代”在技术圈莫名其妙火了起来一群写代码的人主动放弃 Notion、印象笔记、OneNote 这类功能越做越重的“效率神器”重新拿起 Vim、Markdown 和 Git 三个老古董来管理自己的全部知识库。这套玩法有个专门的名字Caveman Notes穴居人笔记法。里面的核心信念就一句话工具的大而全正在杀死我们的思考。我最早听到这个词是在一个技术播客里主持人大半夜兴奋地分享自己把十年笔记从商业软件迁移到纯文本的经过形容自己“像穴居人一样记录”。当时我正被几千条散落在三个不同软件里的笔记搞得头大听完之后当晚就把这套方案搭了起来。用了三年多今天这篇文章就是想把这套思路完整拆开它到底解决什么问题工具链为什么是这三个怎么从零搭出一套完全属于自己的笔记系统以及实际使用中会遇到哪些坑、怎么绕过去。这套东西适合谁凡是需要长期积累知识、写过技术文档、做过项目复盘或者只是厌倦了被软件功能和订阅费绑架的人都应该看看。它不要求你会写代码只需要你有耐心跟三个看起来有点“老气”的工具做朋友。先放下对工具功能的执念认真想想你记录知识的目的是什么——想清楚这件事比选哪个软件重要得多。1. 什么才是真正的“穴居人笔记法”先拆思想再谈工具1.1 为什么偏偏是“穴居人”而不是“极简主义”市面上极简笔记方法不少GTD、PARA、卡片盒笔记每个都有一套完整的理论。但 Caveman Notes 的火爆不是因为它发明了什么新方法论而是因为它在“工具观”上做了一个更彻底的决断不是“少用工具”而是“用最原始的工具”。Caveman穴居人要表达的是一种主动返祖的姿态。你可以想象一个原始人坐在山洞里在石板上刻记号——他没有云同步、没有AI总结、没有标签系统、没有双向链接但他记录下来的东西一样传了几千年。这背后是对“工具复杂度”的主动拒绝。我自己的真实感受是商业笔记工具的问题根本不是“好不好用”而是“它想让你一直用它”。功能越来越多、界面越来越花哨、AI功能一个接一个但你的实际需求可能只是“快速记下来以后能找到”。等到某天你想把笔记导出换一个工具才发现格式是私有的、导出是残缺的、历史版本是没有的——这时候你积累多年的笔记就不再是资产而变成了沉没成本。Caveman 方案把整件事反过来用最普通的纯文本文件存放内容用最简单的方式做版本管理让任何一台电脑上的任何文本编辑器都能打开你的全部知识。它不给你制造依赖所有主动权都在你手里。真正让我下决心的是一次“搬家”经历。当时我把一个用了四年的笔记软件里的内容导出成文件结果表格格式全乱了、图片链接全部失效、创建时间全部丢失几千条笔记变成一堆无法整理的垃圾。那一刻我意识到我信任的从来不是那款软件而是我自己的内容。从那时候开始我接受了一个原则——内容必须独立于工具存在。1.2 Caveman 笔记法的五个核心原则这套方法看上去散漫其实有几条很硬核的设计原则。我把它总结成五个关键词并且用一张表说清楚原则具体含义落地方式本地优先笔记永远先存在自己硬盘上云端只是备份不是主存储本地目录 Git 仓库纯文本优先内容与格式分离任何工具都能打开永远不会过时Markdown 纯文本文件可追溯每次修改都有历史记录误删也不怕Git 的完整提交历史零锁定不依赖任何专属格式和服务随时可以整体迁移普通文件夹 文本文件可检索不靠手工分类用搜索取代整理grep/rg 即时全文检索这五个原则里我个人觉得“本地优先”是最容易让人误解的。很多人一听“本地”第一反应是“那我手机上不就看不到了吗”。实际上本地优先不等于脱离所有设备而是把“本地方是真身、云端只是备份”这个关系理顺。商业软件的逻辑是“云端是真身、本地是缓存”一旦服务出问题或公司倒闭你手里的就只是一堆残骸。本地优先正好反过来哪怕将来没有任何辅助工具你随便打开一个文件夹仍然能读到自己十年前记录的每一句话。“纯文本优先”也很好理解。Word 文档打开要装 Office印象笔记的 .enex 文件只能用官方工具解析但一个 .txt 或 .md 文件从 Unix 诞生到今天所有系统都能读取。纯文本就像是知识界的通用货币——它不性感但它永远不会被拒收。2. 工具链选型为什么偏偏是 Markdown、Vim 和 Git2.1 三个老伙计的定位与分工Caveman 笔记法最常见的工具组合就是 Markdown 加 Vim 加 Git。如果你对这三个工具不熟我先用最接地气的方式解释它们各自干了什么。Markdown 不是软件它是一套纯文本排版规则。你用几个特殊符号表达标题、列表、引用、粗体和链接文件本身是干净的纯文本需要预览时可以渲染成漂亮的页面。它的核心价值是“数据和样式分离”你写的是内容样式可以随时换。这跟 HTML 和 CSS 的关系有点像我记得第一次用 Markdown 写笔记时心里那叫一个舒坦——再也不用在工具栏里找按钮了几个符号就能搞定所有排版。Vim 是一个在终端里运行的文本编辑器外观极其朴素没有菜单栏、没有图标、没有摸鱼动画。它最大的特点是可以全程用键盘完成所有操作手不需要离开键盘去摸鼠标。很多人一听 Vim 就被劝退觉得学习曲线陡峭但我可以负责任地说只需要学会六个命令就能开始用i 进入编辑模式Esc 退出编辑模式dd 删除当前行u 撤销:wq 保存退出:q! 不保存退出。就这六个前两周会慢一点习惯了之后你会发现“双手不离键盘”的输入体验真的很踏实。Git 是程序员用来做代码版本管理的工具但它的本质其实是一个“无限存档点的文件历史系统”。你可以把它想象成游戏存档每次你主动存一次系统就记录下所有文件的当前状态。之后任何时候你都可以一键回到任意一个存档点对比不同时间的内容差异。放到笔记场景里这意味着你写错、误删、改烂了随时都能“读档”恢复。这三样组合在一起形成了一条完整的流水线Markdown 负责“写”Vim 负责“舒服地写”Git 负责“保险地存”。没有多余的东西也没有任何第三方平台依赖一条命令就能把笔记目录变成一个永久的个人知识库。顺便提一句这三个工具的底层哲学其实是一致的它们都诞生于几十年前经历了无数轮技术浪潮到今天仍然是全世界开发者每日离不开的基础设施。它们之所以活得久不是因为功能多恰恰是因为它们每个只专注做好一件事。这在软件领域是非常反主流的气质——大多数现代软件巴不得把所有功能塞进一个应用里而这套方案愿意用三个各自朴素的工具组合出完整的体验。我个人非常欣赏这种“Unix 哲学”式的组合方式每个工具做好一件事通过协作完成复杂的任务。2.2 一套可以直接照抄的笔记目录结构工具选好之后下一个问题就是笔记怎么组织。很多人在这一步就卡住了文件夹怎么建命名规则是什么需不需要标签我的答案是——只需要一个简单的结构加上一条强制命名规则。这是我用了三年多的目录结构你可以直接抄走notes/ ├── 0-inbox/ # 临时想法、快速捕获回头统一处理 ├── 1-projects/ # 有明确目标和截止时间的事 ├── 2-areas/ # 需要长期维护的领域 ├── 3-resources/ # 主题参考资料、阅读笔记 ├── 4-archive/ # 不再活跃但需要保留的内容 └── assets/ # 图片、PDF 等附件每一篇笔记的文件名强制使用“日期-简短描述”格式比如20250610-git-conflict-solve.md。这个命名规则有两个好处第一文件按时间自然排序一眼就能看出最近在做什么第二看到文件名不用打开就知道内容大概是啥检索效率非常高。你可能发现这套结构有点眼熟它其实就是把 PARA 方法Projects、Areas、Resources、Archive搬到了文件夹层面再加了一个以 0 开头的 Inbox 用来做快速捕获。PARA 的作者 Tiago Forte 说过组织系统最大的敌人是“过度设计”所以这套目录特意保持朴素。真正的杀手锏不是目录分层而是下面要说的“以搜索取代整理”——当你能一秒搜到任何内容你是否把笔记放进“最正确”的文件夹就完全不重要了。这大大减轻了记录时的心理负担记就完了整理的事情交给搜索。3. 从零搭建30 分钟建好你的第一个笔记仓库3.1 初始化仓库和基础配置先说明一下以下所有操作在 Windows、macOS、Linux 上都适用只需要预先装好 Git 和一个你顺手能打开终端的环境。Vim 在 macOS 和 Linux 上是自带的Windows 上装 Git 时选上“启用 Vim 作为默认编辑器”即可。如果你实在不想用 Vim哪怕用系统自带的文本编辑器配合命令行操作也能跑通 80% 的流程不必强求。第一步创建目录并初始化 Git 仓库。mkdir ~/notes cd ~/notes git init就这三行你的终身笔记仓库已经成立了。这个目录里从此会记录你每一次改动任何一次误操作都再也伤不到你。我强烈建议你在这个阶段就顺手把子目录和示例笔记建好因为一个“空白得让人不知道往哪里放东西”的仓库很容易让你在第二天就放弃mkdir 0-inbox 1-projects 2-areas 3-resources 4-archive assets关于编辑器配置Vim 只需要一行就能让写 Markdown 的体验变得很舒服。在你的用户目录下创建.vimrc文件写入set expandtab ts2 sw2 set number syntax on意思分别是Tab 键转换成两个空格显示行号开启语法高亮。这些配置让纯文本编辑环境有了一个基础的舒适度但不需要过度调教——我们的目标是内容不是在编辑器上折腾造型。3.2 一天的笔记工作流长什么样工具准备好之后最关心的就是日常到底怎么用。我把一次典型的笔记操作完整写下来你感受一下那种纯粹的体验。早上有个想法冒出来想快速记一下。打开终端进入笔记目录cd ~/notes/0-inbox vim 20250610-inbox.md按i进入输入模式随手写几行- 想到一个项目复盘的新角度从时间投入产出比切入 - 周末研究一下本地全文检索方案当前 2000 条笔记 rg 已经有点慢了按Esc输入:wq保存退出。整个过程大约 10 秒钟不需要想“放到哪个笔记本”不需要纠结“加什么标签”不用等软件启动动画。这种感觉用习惯了之后会非常上瘾——记录变成了零成本动作你会更愿意把临时想法写下来。下午想把一篇资料整理成一篇正式的阅读笔记。在3-resources下新建文件文章开头直接写一个简单的元信息块# 阅读笔记《卡片笔记写作法》 日期2025-06-10 来源图书 状态在读 核心观点 - 写笔记的目的是为了思考不是为了记录 - 永久笔记是原子化的一条笔记只表达一个观点这里我不推荐用复杂的 YAML front matter 和过多字段三个字段就够了日期、来源、状态。因为任何多余的字段都需要你花精力维护而维护本身是一种隐性成本。状态这一个字段很重要它让每篇笔记都有一个“生命周期”从“在读”到“已完成/已归档”整个知识库是流动的而不是一堆死文件。晚上写完笔记统一提交cd ~/notes git add . git commit -m 添加项目复盘想法和阅读笔记这个动作就是给整个知识库拍了一个“快照”。以后任何时候翻旧账都能看到某条笔记是什么时候写的、当时怎么想的、后来改了什么。3.3 检索与输出搜索取代整理笔记越积越多怎么找东西Caveman 方案的回答非常简单粗暴用搜索命令。我日常最常用的命令是rgripgrep它比老牌的grep快出一个数量级是 Rust 写的现代全文搜索工具。# 在全部笔记里搜索包含“Git 冲突”的内容列出文件路径和行号 rg Git 冲突 ~/notes # 只看最近改了哪些文件 git log --oneline -10 # 按文件名模式查找比如所有带“vim”的笔记 find ~/notes -name *vim*实测下来2000 多条笔记的全文检索rg基本是毫秒级返回这个体验已经超越了绝大多数商业笔记软件自带的搜索框。搜索可以准确命中但如果你忘了关键词只记得大概是上个月写的还有一招# 查找某个日期范围内修改过的笔记文件 find ~/notes -name *.md -newermt 2025-05-01 ! -newermt 2025-06-01这种“先搜索后整理”的哲学彻底解放了我。以前我用分类严谨的笔记软件每次新建笔记都要想“放哪个笔记本、贴哪些标签”精神内耗严重。现在我把这些时间全省了代价仅仅是偶尔用一下搜索命令。回想起来那点“整理”的功夫真是一点价值都没有。当你需要把笔记转成文章对外输出时用 pandoc 一条命令转成 Word 或 PDF# Markdown 转 PDF需要安装 LaTeX 环境不想装可以转 HTML 再打印 pandoc subject.md -o subject.pdf4. 实践中的坑与解法我的亲历排查记录4.1 没有云同步多设备怎么用这是 Caveman 方案被问得最多的一个问题。商业工具自带同步这套方案一开始什么都没有怎么办我的解法分三个层级。最省事也是最贴合的一台主力电脑加上随时随地用手机快速记录。手机上不需要同步过去记录到一个临时的 capture 渠道比如系统备忘录里的一个固定文本定期花两分钟手动转移到0-inbox就行。很多人低估了“在两台设备之间转移一条文本”的成本其实这个过程不超过 20 秒而且顺路完成了初步整理。等设备多了之后在局域网或自己的服务器上部署一个 Gitea 或 Gitea 类似的 Git 服务端把笔记仓库推上去其他设备执行git pull就能拿到最新内容。Gitea 是开源轻量的自托管 Git 服务一台低配小主机就能带得动数据完全掌控在自己手里隐私、离线、速度全都有了不必依赖任何外部服务。最原始但也最稳的方案是用一块移动硬盘或 U 盘定期备份整个目录。我有一位朋友就是这样干了八年他说“备份本身就是一次很解压的仪式”。无论用哪种同步方式原则没变云可以丢、盘可以坏、网络可以断只要本地有一份全量数据你的知识库就不会消失。4.2 多设备编辑出现版本冲突怎么办用 Git 做笔记最典型的问题就是“我在公司改了一个文件回家也改了同一个文件两个版本怎么合并”。Git 会提示 conflict并直接在文件里用和标出冲突区域。解决办法很简单打开冲突文件手动选择保留哪一段删掉标记行然后重新提交。遇到冲突并不可怕这正是 Git 在保护你的数据——商业笔记软件遇到这种情况通常只会静默覆盖你都不知道丢的是哪一条。一个让我彻底告别冲突的小习惯是“按环境分区”不同设备只写不同的子目录比如公司电脑只动1-projects个人电脑只动2-areas和3-resources把最容易并发修改的区域拆开。项目文件本身带日期目录一天之内基本不会被两台设备同时修改。这算不上什么技术方案但它是一种行之有效的“组织契约”——人理解规则、遵守规则比让工具强行协调所有人的行为要轻松得多。4.3 图片和附件怎么管理纯文本笔记最大的软肋就是图片。我的方案是在assets目录里按年月建子目录比如assets/2025/06/图片文件用时间戳加描述命名。然后在 Markdown 里引用相对路径![Git 冲突示例](../assets/2025/06/20250610-git-conflict-example.png)最关键的一条经验图片必须和笔记文件一起提交到 Git否则换电脑后就变成死链。虽然 Git 对二进制文件的存储效率不如文本但正常笔记的图片量级完全没问题。如果照片和 PDF 特别多建议把体积大的附件目录在 Git 仓库之外单独存放用同步盘或磁盘备份做兜底这样不会拖慢仓库的性能。我个人的习惯是截图类小图进 Git大量 PDF 进另一处归档区。这个分层方案运行了大半年非常稳定。4.4 坚持不下去怎么办最小可行习惯最后说说最难的部分——长期坚持。很多人搭完系统一腔热血一周后就因为“太麻烦”回到老软件。以我的经验问题不是这套方法不好用而是你一开始设计的使用流程太复杂了。这里我强烈建议“最小可行习惯”第一周只做“快速捕获加每天提交一次”不要建任何高大上的模板也不要追求全新的漂亮目录结构执行两周后如果确实写笔记的频率上来了再在1-projects这类目录里建立自己的项目模板。核心就是让“记录”这个动作永远保持在最低成本同时让“保存”变成每天一个固定时间的肌肉记忆。别高估自己的意志力也别依赖工具的提醒和提醒推送。我给自己的一个约定是每天睡前不管多晚都要打开终端执行一次git add . git commit -m daily update。这组命令已经成为我每天的结束仪式——看着一长串提交记录像日记一样铺展开那种连续感本身就是坚持下去的最大动力。坚持一年之后发现自己完全回不去了那些需要在应用里点半天按钮才能完成的操作现在只需要敲几个英文字母推开一个软件换来的是毫无阻塞的书写自由感这笔交易非常划算。另外一个小技巧给自己设计一条“快速捕获”专用命令甚至做成一个 shell 别名。我在终端里执行qnote这个命令会自动在0-inbox生成一个带当前日期的文件并用 Vim 打开。3 秒内就能进入记录状态这就把记录前的所有“犹豫成本”降到了零。别小看这十几秒的启动差异正是这一步决定了你是愿意随时记录还是懒得多打开一个应用。最后分享一点我自己的体会。Caveman 笔记法本质上不是在教你“怎么记笔记”而是在逼你回答一个问题你积累知识到底是为了真正使用它还是为了塞进一个好看的软件里获得收藏的快感。用最原始的工具整理了三年多的笔记我最大的变化不是知识量变大了而是写东西比以前敢写、也愿意写了——因为我知道每一个字都存在自己手里不会被任何服务商关进笼子。如果你也受够了笔记软件的年费和越来越臃肿的功能不妨找一个晚上照着这篇文章建一个~/notes目录敲下git init那一刻你会感觉到一种久违的数字生活的掌控感。后续如果想再进一步折腾还可以自己写点小脚本给这套纯文本系统加上标签自动生成器、通过命令行把 Markdown 一键发布到个人博客彻底打通“记录”到“输出”的整条链路。
返回列表