Show HN:Gote – 一个用于纯 Markdown 的命令行笔记管理工具
3 分•作者: banorton•19 天前
仓库:https://github.com/banorton/gote
我构建了一个笔记管理工具,用于在工作中快速记笔记和搜索。它的设计理念是极简。另一个重点是提供大量的快捷键,并将操作尽可能地集中在主按键区,以提高人体工程学和速度。
笔记只是 Markdown 文件,保存在你指定的任何目录中。它唯一额外存储的是一个位于 `~/.gote` 的索引。如果你停止使用它,你仍然拥有所有的笔记。
标签放在笔记的第一行,用句点分隔,例如 `.project.urgent.work`。不使用 frontmatter。
搜索功能内置于二进制文件中,采用带词干提取的 BM25 算法,因此无需设置 ripgrep 或 fzf。`gote s meeting` 会搜索标题和内容,`gote s -t .work` 按标签过滤,`gote s -w 2412` 会拉取 2024 年 12 月的笔记。
大多数命令都有一个两字母的版本,结合了列表和操作。`ro` 是 recent + open(最近打开),`sv` 是 search + view(搜索查看),`tp` 是 tag + pin(标签置顶)。当出现结果时,你可以使用主按键区的键来选择,而不是箭头或数字。
mac/linux/windows 的二进制文件可在 releases 页面找到,或者如果你安装了 Go,可以运行 `go install github.com/banorton/gote@latest` 来安装。
这个项目的目标不是学习新东西或构建令人印象深刻的东西。我只是有一个需求,并用一个“氛围编码”的解决方案来满足它。我使用它已经大约一年了,它的功能或多或少地达到了我想要的效果。所以我想分享出来,以防其他人有兴趣使用它、贡献它,或者将其作为自己解决方案的参考。
查看原文
Repo: <a href="https://github.com/banorton/gote" rel="nofollow">https://github.com/banorton/gote</a><p>I built a note taking management tool to use at work for quick note taking and searching. It is intended to be quite minimal. Another focus was to have lots of shortcuts and to keep things close to the homerow for ergonomics and speed.<p>Notes are just markdown files in whatever directory you point it at. The only thing it keeps elsewhere is an index in ~/.gote. If you stop using it you still have all your notes.<p>Tags go on the first line of the note, separated by periods, like .project.urgent.work. No frontmatter.<p>Search is built into the binary, BM25 with stemming, so there's no ripgrep or fzf to set up. gote s meeting searches titles and content, gote s -t .work filters by tag, gote s -w 2412 pulls up notes from December 2024.<p>Most commands have a two letter version that combines a list with an action. ro is recent + open, sv is search + view, tp is tag + pin. When results come up you pick one with a home row key instead of arrows or numbers.<p>Binaries for mac/linux/windows are on the releases page, or go install github.com/banorton/gote@latest if you have Go.<p>The goal of this project was not to learn something new or build something impressive. I simply had a need and filled it with a vibe-coded solution. I have been using it for about a year now and it does more or less exactly what I wanted. So I thought I'd share in case others are interested in using it, contributing to it, or want to use it as a reference for their own solution.