乐于分享
好东西不私藏

��ⁿ(����) Markdown 编辑器v1.0.0发布

��ⁿ(����) Markdown 编辑器v1.0.0发布

说起来动机不算体面——这么多年,我在 Windows 上就没找到过一个趁手的 Markdown 编辑器。

好用的都在 macOS。

macOS 上的写作工具生态像一个装修精致的书房,光是挑工具就能挑出审美取向。回头看 Windows,情况就尴尬了。

Typora 早就从免费变成 89 元,而且不开源[1],这一点让我从一开始就不想用。MarkText 开源免费,但最后一版稳定版本 v0.17.1 停留了四年——直到 2026 年 5 月原作者才回归合并 fork,发布 v19.0[2]。Obsidian 强归强,但作为纯 Markdown 编辑器重得像开了一辆坦克去买菜。Notion 在线加载慢得让人砸键盘,而且数据不在本地。

那小众工具呢?Writemonkey 体积轻量但太老。Markdown-Edit 哲学到位但已停更。Velotype 技术新但功能不全——2026 年 5 月刚发布 v0.5.0,虽然 Mermaid 和 LaTeX 支持已落地,但整体生态仍处于早期[3][4]。Markdown Monster 功能细但审美老。MarkdownPad 就不提了。

这些工具各有各的闪光点,但没有一个能把我所有的需求都装进去。

说白了,我就是想要一个长得好看、打开快、离线能用、顺便把 AI 和公众号发布做进去了的 Windows Markdown 编辑器。

找不到,那就自己写 – 这是AI时代赋予我们的超能力!

所以有了 NicMD。

名字本身就是一个小心思,但值得细说。

第一层:Nic + MD。Nicholas 是我的英文名,缩写 Nic,MD 是 Markdown——Nic 的 Markdown 编辑器。

第二层:Ni + cmd。你把这个词拆开念,”ni-cmd”,像一个可以在终端里敲的命令。这不是巧合——nicmd 落到 CLI 时就是一个干净的命令名,短、顺,像一个真正可敲的命令。这一点让 NicMD 的定位落在”桌面写作工具”和”命令行工具”的交叉点上——它既是编辑器,也是工具。

这两个读法我都很喜欢。第一层有个人温度,第二层有工具感。不打磨一下你可能注意不到。

Logo 则走得更远。我没有用普通的 N 或 M 字母图标(那样太像模板了),而是用 Unicode 数学花体拼了一个公式:

𝕸ⁿ(𝒊𝒄)

  • 𝕸
     是数学双线体(黑板粗体),取 Markdown / Math / Mind 的含义

  •  来自 Nic 的 n,借指数的意象表达增长与扩展——编辑器应该帮你放大写作能力
  • (𝒊𝒄)
     用 script 手写风格收束,把 nic 收束成类似函数参数或数学注释的小尾巴,也像一个个性化的签名

合在一起,它看起来一道数学公式,也像一个终端里偶然打出来的漂亮 Unicode 标记。

NicMD 的气质应该介于四件事之间:写作工具(克制、安静、可读)、开发者工具(终端、代码、公式感)、CLI 工具(可敲的命令)、个人品牌(不像模板的记忆点)。𝕸ⁿ(𝒊𝒄) 就是这种气质的视觉锚点。


一、AI 不应该是插件

市面上大多数编辑器的 AI 集成思路是:开一个侧边栏,接入 OpenAI API,用户可以跟 ChatGPT 聊天。逻辑上没问题,但实际体验是割裂的——你在写文档,AI 在另一个空间,两者之间唯一的桥梁是你手动复制粘贴。

NicMD 的 AI 设计从第一天就跟编辑器共享同一套上下文系统

1.1 三件事,让 AI 真正”看见”你的文档

拖拽文件即上下文。 不需要手动描述”请帮我分析 src/utils/helper.ts 这个文件”,直接把文件从侧边栏拖到 AI 输入框,文件内容自动注入为对话上下文。输入框是一个富文本容器,支持多个文件引用标签混合排列——你甚至可以把一段编辑器选中文本和一个文件同时作为上下文发给 AI。

选中即提问。 编辑器里选中一段文本,一键发送给 AI。不用复制、不用切换面板、不用重新描述刚才在讨论什么。AI 收到的不只是你选中的代码,而是选中的代码 + 当前文件的上下文。

联网搜索,AI 自己决定什么时候搜。 这是我花最多时间打磨的能力。NicMD 的 AI 不是”你点了搜索按钮才搜”,而是通过 OpenAI Function Calling 机制,AI 自己判断”这个问题需要实时信息”,然后自动触发搜索——百度通用搜索或搜狗微信文章搜索——拿到结果后继续生成回答。整个过程对用户透明,你只看到一个”正在搜索…”的状态提示。

用户:"React 19 的 use() hook 和 Suspense 怎么配合?"AI 内部决策链:1. 判断:这个问题涉及最新 API,需要联网2. 调用 web_search(query="React 19 use hook Suspense 用法", engine="baidu")3. 拿到搜索结果,整合进回答4. 流式输出最终答案

这个链路放在 2026 年不算黑科技,但原生内置在本地编辑器里——不需要浏览器插件、不需要 MCP Server、不需要额外配置。

1.2 多模型、多网关、多人格

一个 AI 模型不可能适配所有写作场景。写技术文档用 DeepSeek 更省钱,写创意文案用 GPT-4o 更灵动,写中文长文用通义千问更自然。

NicMD 支持配置多套 API 网关,一键切换。每套网关都可以绑定独立的 API Key、Base URL 和模型名——兼容所有 OpenAI 格式的 API,包括 DeepSeek、通义千问、本地 Ollama。

更进一步,NicMD 支持自定义 AI 人格。你可以定义 AI 的「角色」(它是什么身份)和「能力」(它擅长什么),保存为多套人格配置,在不同写作场景间切换:

场景
角色
能力
技术博客
资深架构师,擅长用类比解释复杂概念
代码审查、架构设计、技术写作
公众号推文
懂技术的自媒体写手,文风克制但有力度
标题优化、排版建议、读者心理分析
英文文档
Native English technical writer
Grammar polish, tone adjustment, documentation structure

在我看来,这是 AI 写作工具最被低估的需求。不是模型不够强,而是模型不知道它应该在什么身份下说话。 当你给了它明确的角色和能力边界,输出质量的提升远比换一个更贵的模型来得显著。


二、编辑器本身:从”能用”到”顺手”

AI 是亮点,但编辑器的基本功才是底线。NicMD 在基本功上的选择很明确:技术写作场景下,什么功能带来最高的幸福感?

2.1 Monaco Editor,但离线

编辑器内核选了 Monaco——VS Code 的同款引擎。语法高亮、括号匹配、字体连字(ligatures)、多光标编辑,都是 Monaco 的原生能力。

但关键决策是:Monaco 的所有资源文件全部本地打包,不依赖 CDN。 这意味着断网也能正常编辑——飞机上、高铁上、客户现场的内网环境,编辑体验不打折。

2.2 实时预览中的”隐藏技能”

GitHub Flavored Markdown 的表格、任务列表、删除线,这是标配。Mermaid 流程图渲染,也不算稀奇。

但有两个能力值得单说。

树形结构自动识别。 你在代码块里写一段目录树:

src/├── components/│   ├── Button.tsx│   └── Modal.tsx├── hooks/│   └── useAuth.ts└── App.tsx

NicMD 会自动识别这不是普通代码,而是树形结构,渲染成带文件夹图标的可视化目录树——而不是原样输出带 ├─ 的文本。这个能力来源于一个轻量的启发式解析器:检测 ├└│┬─ 等树形字符,按缩进层级拆解目录和文件的嵌套关系,然后用 React 组件重新渲染。

智能中文引号加粗。 中文引号 "" 内的文字被 ** 包裹时,标准 Markdown 渲染器会把它当作带标点的加粗文本处理——效果常常不对。NicMD 的预览层在渲染前对中文引号内的加粗做了预处理,让 **"这段话"** 正确渲染为加粗的引文,而不是乱掉。


三、命令行不该是附属品

大多数桌面编辑器没有 CLI。有 CLI 的少数几款,CLI 也只是”打开文件”。

NicMD 的 CLI 是一等公民

NicMD.exe document.md                    # 打开文件进入编辑模式NicMD.exe --export-pdf input.md          # 直接导出 PDFNicMD.exe --export-pdf input.md out.pdf  # 指定输出路径NicMD.exe --convert-docx input.docx      # DOCX 转 Markdown

这意味着 NicMD 可以嵌入到自动化工作流里。比如你有一个脚本,每次构建完文档站点后自动把 README 导出为 PDF:

npm run build-docs && NicMD.exe --export-pdf ./docs/README.md ./dist/manual.pdf

或者你从同事那里收到一个 Word 文档,不想打开 Word 手动复制粘贴:

NicMD.exe --convert-docx 产品需求文档.docx 产品需求文档.md

CLI 的 PDF 导出和 DOCX 转换都是无头模式——不启动 GUI 窗口,在后台静默完成。PDF 导出背后走的是 Electron 的 printToPDF API,配合一个完整的橙色主题 HTML 模板——代码高亮、引用块、表格,跟 GUI 中的预览效果完全一致。

DOCX 转换使用 mammoth 引擎,将 Word 文档中的标题层级、列表、粗体、链接等富文本结构映射为 Markdown,保留了文档的语义信息而非仅仅提取纯文本。


四、完整的发布工作流

写作只是前半段,发布才是终点。NicMD 内置了两条发布路径。

4.1 微信公众号:一键 HTML 复制

写过公众号的人都知道,微信编辑器对 Markdown 的兼容性几乎为零。# 标题不会变大, 引用块不会变色,表格直接散架,代码块变成无格式纯文本。市面上已有的 MD 转微信工具要么是网页版(每次粘贴都要重新转换),要么样式老旧、不支持 Mermaid。

NicMD 的微信预览模式做了一件事:把 Markdown 渲染结果转成带有内联样式的 HTML,Mermaid 图表先渲染为 SVG 再内嵌,然后一键复制到剪贴板。粘贴到微信编辑器后,字体、颜色、间距、代码块背景、表格边框——全都保留。

4.2 PDF:不只是”打印成 PDF”

大多数工具的 PDF 导出等价于浏览器的”打印 → 另存为 PDF”——没有设计感,代码块没有高亮底色,标题只有默认字号。

NicMD 的 PDF 导出是一套独立设计的排版系统

  • 780px 阅读宽度,40px 内边距
  • H1/H2 使用橙色强调色,带底部装饰线
  • 代码块使用暖米色背景 + 橙色边框,跟编辑器预览的代码块主题一致
  • 引用块带橙色左边框 + 浅橙底色
  • 表格表头统一橙色白字
  • 偶数行自动添加浅橙底色,提升可读性

这套排版是硬编码在 pdf-builder.ts 里的一个独立 CSS 体系,不依赖任何外部样式库。不是因为不能引用,而是因为”PDF 的排版美学应该是编辑器设计语言的自然延伸”。


五、几个架构决策

一个项目最有意思的部分往往不是它做了什么,而是它选择不做什么,以及为什么。

5.1 只做 Windows

NicMD 目前只支持 Windows 平台。不是做不到跨平台——Electron 跨平台几乎没有额外成本——而是专注带来更好的体验

Windows 的安装体验有自己的特色:NicMD 提供两种安装包——NSIS 安装版(支持自定义安装路径、覆盖安装)和便携版(绿色免安装,双击即用)。图标是 .ico 格式,专门为 Windows 任务栏和开始菜单优化过。启动动画的圆角窗口在 Windows 上的表现也不同于 macOS。

我的判断是:与其做一个三个平台都”能用”的编辑器,不如先把一个平台做到”顺手”。

5.2 Monaco 本地打包,不依赖 CDN

编辑器内核 Monaco 的所有静态资源(语法高亮定义、语言服务、主题)全部通过 vite-plugin-monaco-editor 插件打包到本地。这意味着:

  • 断网环境完整可用
  • 首屏加载不受 CDN 速度影响
  • 版本锁定,不会被 CDN 更新意外破坏

代价是安装包体积增加了约 15MB。在我看来,这 15MB 换来的”随时随地可用”的安全感,值。

5.3 错误日志:为开源协作设计

NicMD 自动将错误日志写入 %APPDATA%/nicmd/logs/。用户在 GitHub Issues 提 Bug 时,附上日志文件就行。日志系统在最外层捕获未处理的异常,记录完整的错误堆栈和时间戳。

这个设计的出发点很简单:开源项目的 Bug 报告质量决定了维护效率。 与其让用户说”好像有个 Bug”,不如直接拿到错误日志。


技术栈一览

层级
技术选型
选型理由
桌面框架
Electron 28
Windows 原生体验,printToPDF 直接可用
构建工具
Electron Vite + Electron Builder
热更新快,NSIS 打包成熟
编辑器
Monaco Editor(本地加载)
VS Code 同款,离线可用
前端
React 18 + TypeScript + Zustand
轻量状态管理,无 boilerplate
样式
Tailwind CSS + CSS Variables
暗色模式用 darkMode: class,主题变量可控
Markdown 渲染
react-markdown + remark-gfm + rehype-raw
GitHub 风格,支持原始 HTML
图表
Mermaid(懒加载)
流程图、时序图、甘特图
PDF 生成
marked + Electron printToPDF
独立 HTML 模板,不走浏览器打印
DOCX 转换
mammoth
语义保留,不丢层级结构
AI 能力
OpenAI SDK(Function Calling)
兼容所有 OpenAI 格式 API
搜索引擎
Electron net.request
不依赖外部 HTTP 库,原生抓取百度/搜狗

下载与源代码

NicMD 在 GitHub 完全开源(MIT License):

🔗 https://github.com/NicholasQu/NicMD

提供下载:

  • Windows 安装包
     (NicMD-1.0.0-x64.exe.zip,117 MB)

开发环境只需要 Node.js ≥ 18 + npm ≥ 9:

git clone https://github.com/NicholasQu/NicMD.gitcd NicMD/appnpm installnpm run dev

欢迎 Star、Issue、PR。如果你也在 AI 写作工具这个方向上探索,希望 NicMD 能给你一些启发——不管是关于”AI 如何跟编辑器原生融合”的思考,还是关于”一个小工具如何有自己的审美坚持”的实践。


所谓沉静写作,不是关掉一切干扰,而是在最合适的工具里,让表达自然流动。


本文使用 NicMD v1.0.0 撰写并发布。


参考文献

[1] Typora 官方网站 – https://typora.io/(价格:$14.99 或 89 元人民币,买断制)

[2] LinuxNews – Der Markdown-Editor MarkText ist zurück – https://linuxnews.de/der-markdown-editor-marktext-ist-zurueck/(2026 年 5 月 29 日,原作者 Jocs 回归并发布 v19.0)

[3] Rust 用户社区 – Velotype — a native Rust Markdown editor built for WYSIWYG writing – https://users.rust-lang.org/t/velotype-a-native-rust-markdown-editor-built-for-wysiwyg-writing/140046(2026 年 5 月 11 日发布)

[4] Rust 用户社区 – Velotype 0.5.0 Released: Mermaid and LaTeX Support – https://users.rust-lang.org/t/velotype-0-5-0-released-outline-parsing-rendering-workspace-mode-mermaid-and-latex-support-and-more/140309/1(2026 年 5 月 28 日发布,新增 Mermaid 和 LaTeX 支持)