跨文件引用和补全不生效时,需在项目根目录建空的 .marksman.toml 或执行 git init 初始化仓库;macOS 提示无法验证开发者时需执行 xattr -d com.apple.quarantine ;Helix 虽内置支持,但仍需手动把 marksman 二进制加入 PATH

marksman
artempyanykhMIT活跃维护基于 LSP 的 Markdown 语言服务器,为编辑器提供补全、跳转、诊断等代码辅助能力,让写笔记和文档更智能。
Write Markdown with code assist and intelligence in the comfort of your favourite editor.
brew install marksmanREADME 未说明,仅说明支持 MacOS、Linux 和 Windows,并以自包含二进制分发
基于 LSP 的 Markdown 语言服务器,为任意编辑器提供补全、跳转和诊断
基于 LSP 的 Markdown 语言服务器,为编辑器提供补全、跳转、诊断等代码辅助能力,让写笔记和文档更智能。
核心能力
- 通过 LSP 协议提供补全、悬停与跳转定义
- 支持查找引用与重命名重构
- 支持内联链接、引用链接和 wiki-link 三种写法
- 对 wiki-link 检测断链与重复或歧义标题
- 以自包含二进制分发,覆盖三大操作系统
容易踩的坑
- 2026-02-08最新正式版2026-02-08 · 2026-02-08 21:36 UTC
What's Changed
- fix: Off-by-one symbol range for headings ending with supplementary Unicode characters by @artempyanykh in https://github.com/artempyanykh/marksman/pull/455
Full Changelog: https://github.com/artempyanykh/marksman/compare/2026-01-28...2026-02-08
- 2026-01-282026-01-28 · 2026-01-28 22:44 UTC
查看更新说明
What's Changed
- feat(parser): Enable Markdig Mathematics extension by @abap34 in https://github.com/artempyanykh/marksman/pull/449
- Add toc config by @ficd0 in https://github.com/artempyanykh/marksman/pull/447
New Contributors
- @abap34 made their first contribution in https://github.com/artempyanykh/marksman/pull/449
- @ficd0 made their first contribution in https://github.com/artempyanykh/marksman/pull/447
Full Changelog: https://github.com/artempyanykh/marksman/compare/2025-12-13...2026-01-28
- 2025-12-132025-12-13 · 2025-12-13 13:05 UTC
查看更新说明
What's Changed
- misc: Output server version and env metadata in startup message by @artempyanykh in https://github.com/artempyanykh/marksman/pull/444
Full Changelog: https://github.com/artempyanykh/marksman/compare/2025-11-30...2025-12-13
- 2025-11-302025-11-30 · 2025-11-30 17:30 UTC
查看更新说明
What's Changed
- fix: Add missing musl binaries to the release part of release.yml workflow by @artempyanykh in https://github.com/artempyanykh/marksman/pull/440
- misc: Print document when fatal error is encountered by @artempyanykh in https://github.com/artempyanykh/marksman/pull/441
- misc: Use the corrent version string everywhere by @artempyanykh in https://github.com/artempyanykh/marksman/pull/442
- fix: Tag the release with the release name before the release build by @artempyanykh in https://github.com/artempyanykh/marksman/pull/443
Full Changelog: https://github.com/artempyanykh/marksman/compare/2025-11-25...2025-11-30
- 2025-11-252025-11-25 · 2025-11-25 23:47 UTC
查看更新说明
What's Changed
- heading ID disambiguation according to GLFM spec by @komar007 in https://github.com/artempyanykh/marksman/pull/384
- Add kakoune to readme. by @partisani in https://github.com/artempyanykh/marksman/pull/389
- [docs] document integration with Zed by @ljrk0 in https://github.com/artempyanykh/marksman/pull/395
- Update the Ale section by @bbatsov in https://github.com/artempyanykh/marksman/pull/407
- Update configuration.md by @gaoxiaoliangz in https://github.com/artempyanykh/marksman/pull/425
- feat(folder): recognize Jujutsu workspaces by treating .jj as a workspace root marker (#434) by @artempyanykh in https://github.com/artempyanykh/marksman/pull/436
- deps: Update to .NET 9 by @artempyanykh in https://github.com/artempyanykh/marksman/pull/357
- deps: Update all deps by @artempyanykh in https://github.com/artempyanykh/marksman/pull/438
- Add Linux musl builds to CI (x64 and arm64) by @samuelallan72 in https://github.com/artempyanykh/marksman/pull/435
New Contributors
- @komar007 made their first contribution in https://github.com/artempyanykh/marksman/pull/384
- @partisani made their first contribution in https://github.com/artempyanykh/marksman/pull/389
- @ljrk0 made their first contribution in https://github.com/artempyanykh/marksman/pull/395
- @bbatsov made their first contribution in https://github.com/artempyanykh/marksman/pull/407
- @gaoxiaoliangz made their first contribution in https://github.com/artempyanykh/marksman/pull/425
- @samuelallan72 made their first contribution in https://github.com/artempyanykh/marksman/pull/435
Full Changelog: https://github.com/artempyanykh/marksman/compare/2024-12-18...2025-11-25
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Marksman
Write Markdown with code assist and intelligence in the comfort of your favourite editor.

Marksman is a program that integrates with your editor to assist you in writing and maintaining your Markdown documents. Using LSP protocol it provides completion, goto definition, find references, rename refactoring, diagnostics, and more. In addition to regular Markdown, it also supports wiki-link-style references that enable Zettelkasten-like1, 2 note taking. See more about Marksman's features below.
Marksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS.
The server provides assistance with:
- Markdown inline links:
This is [inline link](https://github.com/artempyanykh/marksman/blob/HEAD/some-file.md#some-heading). This is an internal [anchor link](#heading). - Markdown reference links:
See [reference]. [reference]: /url "Title" - Wiki-links:
Link to [[another-note]]. Link to [[another-notes#heading]]. Internal link to [[#a-heading]].
All types of links support completion, hover, goto definition/references. Additionally, Marksman provides diagnostics for wiki-links to detect broken references and duplicate/ambiguous headings.
Existing editor integrations3:
-
VSCode via Marksman VSCode.
-
Neovim:
- via mason.nvim (automatic server installation) (requires mason-lspconfig.nvim)
- via nvim-lspconfig,
- via CoC-marksman.
-
Vim:
-
Emacs:
-
via LSP Mode (automatic server installation).
Example config for
use-packageusers:(use-package markdown-mode :hook (markdown-mode . lsp) :config (require 'lsp-marksman)) -
via Eglot, requires configuration (unless eglot#1013 gets merged); add the following to your
init.el(add-to-list 'eglot-server-programs '(markdown-mode . ("marksman"))) (add-hook 'markdown-mode-hook #'eglot-ensure)
-
-
Helix supports Marksman out of the box. However, you need add
marksmanbinary to yourPATHmanually. -
Kakoune can be used with kakoune-lsp with no other configuration.
-
Sublime Text via LSP-marksman (automatic server installation).
-
BBEdit can be configured to use Marksman as an LSP server for Markdown files.
-
Zed supports Marksman through it's integrated LSP support, by addinging it as an available LSP for Markdown in Zed's
settings.json:// Zed settings { // ... "languages": { "Markdown": { "language_servers": ["marksman"] } } }
How to install
See the installation instructions.
Demos and tutorials
- See this page for a mix of Neovim, VSCode, and Emacs screen captures.
- See this post on how to use Marksman with LunarVim.
- Check out this YouTube video by Luke Pighetti on how to use Marksman with Helix.

Features
See the Features page to learn more about language features, configurations, and single- and multi-file modes.
FAQ
- Cross-file references and completions don't work.
- Either create an empty
.marksman.tomlin the root folder of your project or initialize a repository (e.g.git init). See this page to learn more about single- and mult-file modes.
- Either create an empty
- I'm getting "marksman can’t be opened because Apple cannot check it for malicious software" on MacOS.
- Run the following command to bypass it and let Mac know that it's fine:
xattr -d com.apple.quarantine <path-to-marksman-bin>.
- Run the following command to bypass it and let Mac know that it's fine:
Footnotes
-
You may have heard about Roam Research. That is a commercial implementation of the Zettelkasten method and another point of reference for what Marksman is about. However, unlike a proprietary Roam Research, Marksman is free, open-source and integrated into your favourite editor (albeit for not not as feature rich as Roam Research). ↩
-
There is an excellent VSCode extension called Markdown Memo. You definitely need to check it out if you're primarily using VSCode as it has some features that are missing in Marksman and Marksman VSCode extension. However, Markdown Memo is VSCode specific while Marksman is a generic language server, so can be used with any editor that has LSP support: Emacs, Vim, Neovim, etc. ↩
-
Since Marksman is a regular Language Server most of the functionality works out of the box with any LSP client. ↩