预编译二进制未签名,Windows Defender 等安全工具曾误报,Windows 上建议自行编译;zk 不是笔记编辑器,需配合自己的编辑器使用;它也不负责把笔记发布到网页

zk
zk-orgGPL-3.0活跃维护用纯文本管理笔记的命令行助手,支持 Zettelkasten 卡片盒与 wiki 式双向链接,帮你在终端里快速检索、整理和串联知识。
A plain text note-taking assistant
命令行纯文本笔记助手,帮你维护 Zettelkasten 或个人 wiki
用纯文本管理笔记的命令行助手,支持 Zettelkasten 卡片盒与 wiki 式双向链接,帮你在终端里快速检索、整理和串联知识。
核心能力
- 从模板快速创建新笔记
- 按标签、链接和提及进行高级搜索过滤
- 通过 LSP 集成任意编辑器,另有 Neovim、VS Code、Emacs 插件
- 借助 fzf 提供交互式笔记浏览器
- 支持 Git 风格命令别名与命名过滤器
容易踩的坑
- v0.15.70.15.7最新正式版2026-10-15 · 2026-10-15 12:42 UTC
Fixed
- Note ordering requested with
--sortis kept by fzf while filtering interactively (by @paoValle, #783) - Resolve links with a leading slash against the notebook root, falling back to the filesystem for absolute paths (by @zmre, #745)
NoteIndex.Commitnow passes a completeNoteIndexto its transaction instead of one missing the notebook path and note extension (by @ehsash, #750)
Changed
- Tag filtering is now case-insensitive (by @tuxikus, #770)
- Use the working directory as the target of the
edit --interactivenew note fzf binding (by @skbolton, #768)
- Note ordering requested with
- v0.15.60.15.62026-07-26 · 2026-07-26 15:07 UTC
查看更新说明
Added
- Parse links to notes in frontmatter (by @tjex, #710)
- Set filters for lsp completion items from the config (by @wrvsrx, #736)
- Set a note's modification time in frontmatter and allow for custom key naming for both creation and modification keys (by @BennoLossin, #531)
Fixed
- Indexing made significantly more performant (by @Keluaa, #735)
- Support filtering by date and time with
"<date> <time>"instead of<date>T<time>only (by @tjex, #743) - Exclude globs now prune matching directories from indexing, improving speed of indexing (by @ehsash, #741)
- v0.15.50.15.52026-06-08 · 2026-06-08 11:15 UTC
查看更新说明
Added
- List, edit and filter for broken links with
--broken-links(by @WhyNotHugo, #708) - Update strftime package, supporting
%gand%Gformats in the{{format-date}}helper (by @tjex, #723) - Option to append links to selected text, instead of replacing (by @tjex, #724)
Fixed
- Paths with
~and env variables no longer error when passed to--notebook-dirand--working-dir(by @tjex, #732) - Guard LSP against unnecessary erroring on missing textDocument/definition capabilities (by @SAY-5, #718)
- List, edit and filter for broken links with
- v0.15.40.15.42026-05-04 · 2026-05-04 12:36 UTC
查看更新说明
Small release to fix a (juicy) bug introduced in 0.15.3
- "jump to definition" follows wrong link (by @WhyNotHugo, 703)
- v0.15.30.15.32026-04-27 · 2026-04-27 14:16 UTC
查看更新说明
Added
zk config --list <object>(by @andrebauer, 484)
Fixed
- Ignore commented links for LSP diagnostics. Use an AST to parse files, fixing other similar edge cases. (by @WhyNotHugo, 638)
- Links in markdown footnotes now included in :ZkLinks (by @WhyNotHugo, 639)
- Indexing notebook now 35% and 74% faster for full and incremental indexing respectively (by @WhyNotHugo, 642)
- Stop crashing lsp server when server received
textDocument/completionrequest with out of range parameters. (by @virusbb001, 667) - lsp: Provide completion after [[ on lines with multi-byte characters (by @virusbb001, 671)
- Prevent crash in LookForward when the parameters is out of characters number. (by @virusbb001, 673)
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Description
zk is a command-line tool helping you to maintain a plain text
Zettelkasten or
personal wiki.
Looking for a quick usage example?
Or want to see it in action? Checkout Shivan's video, Note-taking System ALL Programmers Should Consider.
Join us on Matrix for general, support and development discussion: #zk-org:pub.solar.
Highlights
- Creating notes from templates
- Advanced search and filtering capabilities including tags, links and mentions
- Integration with your favorite editors:
- Any LSP-compatible editor
zk-emacsfor Emacszk-nvimfor Neovim 0.8+zk-vscodefor Visual Studio Code
- Interactive browser,
powered by
fzf - Git-style command aliases and named filters
- Made with automation in mind
- Notebook housekeeping
- Future-proof, thanks to Markdown
- Supports most Markdown syntax flavors
- Links: regular Markdown links and
[[Wikilinks]]. - Tags:
#hashtags,:colon:separated:tags:, Bear's#multi-word tags#. - YAML frontmatter
- Links: regular Markdown links and
See the changelog for the list of upcoming features waiting to be released.
What zk is not
- A note editor.
- A tool to serve your notes on the web – for this, there are some static site solutions.
Install
Check out the latest release for pre-built binaries for macOS, Linux and Windows.
[!WARNING] The pre-built binaries are not code-signed. In the past Windows Defender and other security tools have flagged some versions of the Windows binary as malicious. Building
zkyourself is currently the recommended workaround on Windows — see Build from scratch. See #740 for details.
Homebrew
brew install zk
Or, if you want the latest state of main:
brew install --HEAD zk
Nix
zk is available in nixpkgs and has a
Home Manager module.
If you want to run zk without permanently installing it:
nix run nixpkgs#zk
Or, if you want to create an ephemeral shell with zk available:
nix shell nixpkgs#zk
To permanently install zk on NixOS at the system level, include nixpkgs.zk
in environment.systemPackages in your system configuration
(/etc/nixos/configuration.nix by default):
environment.systemPackages = [
# Your other packages here
nixpkgs.zk
];
If you are using Home Manager,
instead of installing for all users on the system, you can permanently install
and configure zk just for your user via the Home Manager module. Add this to
your Home Manager configuration:
programs.zk.enable = true;
# Modify `${XDG_CONFIG_HOME}/zk/config.toml` through this attr
programs.zk.settings = {
# Add your own configuration settings for zk here
};
Alpine Linux
zk is currently available in the testing repositories:
apk add zk
Arch Linux
You can install the zk package from the official repos.
sudo pacman -S zk
MacPorts
sudo port install zk
Build from scratch
Make sure you have a working Go 1.21+ installation, then clone the repository:
git clone https://github.com/zk-org/zk.git
cd zk
make build
The latest state of main can be considered the stable pre-release state. To use the absolute latest state (bugs to be expected) and to contribute:
git checkout dev
make build
On macOS / Linux
$ make
$ ./zk -h
Contributing
We warmly welcome issues, PRs and discussions.
Be sure when contributing to branch from dev, not main.
Here you can read
some useful info for contributing to zk.
Related projects
- Neuron – a great tool to publish a Zettelkasten on the web
- Emanote – an improved successor to Neuron (see Emanote configuration for zk)
- Weave – another tool to publish Zettelkasten on the web
- sirupsen's zk – a collection of scripts with a similar purpose
- zk-spaced – spaced repetition plugin for zk
- zk-graph-view - interactive graph visualization plugin for zk