MarkEdit 实测评估:4 MB 的原生 macOS Markdown 编辑器,靠 CodeMirror 6 撑起百万行文件
就像 Mac 上的 TextEdit,但专用于 Markdown。 MarkEdit MarkEdit 是一款适用于 macOS 的免费开源 Markdown 编辑器。
秒懂
- 它是什么?
- MarkEdit 是一款面向 macOS 的原生 Markdown 编辑器,安装包仅 4 MB,宣称能流畅处理百万行文件。它严格遵循 GFM 规范,用 CodeMirror 6 实现多光标和代码折叠,但扩展方式依赖 CSS 和 JavaScript,并非传统插件系统。
- 适合谁用?
- MarkEdit 适合那些需要快速打开大文件、偏好原生 macOS 界面、且不依赖复杂插件生态的 Markdown 写作者。它不适合需要所见即所得排版、协作编辑或跨平台同步的用户,因为其定位是轻量编辑而非全功能 IDE。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库在最近一天内有新的提交。
- 用什么语言写的?
- 主要是 Swift(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题,给谁用
MarkEdit 解决的是 macOS 上 Markdown 编辑器的两个痛点:一是 Electron 应用体积大、内存占用高,二是 TextKit 原生编辑器处理大文件时性能不足。项目自述定位为「像 TextEdit 但专为 Markdown」,目标用户是那些需要快速打开、编辑超大 Markdown 文件(比如 10 MB 的日志或文档),同时希望界面和操作完全符合 macOS 习惯的人。它不追求在某个维度做到极致,而是强调体积、速度、原生集成和正确性之间的平衡。对于每天写笔记、技术文档或博客的 Mac 用户,MarkEdit 提供了一个轻量选择,但如果你需要富文本排版或协作功能,它显然不是目标。
架构拆解:原生壳加 CodeMirror 6 内核
MarkEdit 的架构在 README 中描述得很清楚:UI 控件保持 macOS 原生,但核心编辑能力建立在 CodeMirror 6 之上。这意味着多光标、代码折叠、语法高亮这些复杂编辑功能,并不是用 AppKit 的 NSTextView 实现,而是通过 CodeMirror 6 的 JavaScript 引擎处理。这种混合架构的好处是正确性和性能,CodeMirror 6 的虚拟渲染机制让百万行文件也能流畅滚动,同时原生外壳保证了系统集成,比如 force-touch 查词、内联预测和 Writing Tools。代价是,你无法像操作普通 NSTextView 那样直接扩展编辑行为,一切自定义都要走 CodeMirror 的扩展体系。另外,项目严格遵循 GFM 规范,没有私有语法,这意味着如果你需要 GFM 之外的扩展(比如 LaTeX 数学公式),它不会支持。
安装与启动:两条路径,一个 4 MB 的 dmg
安装方式有两种,都来自 README。第一种是去 GitHub Releases 页面下载最新的 MarkEdit.dmg,打开后把 MarkEdit.app 拖入 Applications 文件夹。第二种是用 Homebrew 命令:brew install --cask markedit。安装包大小约 4 MB,这是它区别于 Electron 应用的核心卖点之一。安装后,MarkEdit 会自动检查更新,也可以在 Releases 页面手动浏览版本历史。对于旧版 macOS,项目提供了单独的 Release 标签,比如 macos-12、macos-13、macos-14,说明它支持较老系统,但具体最低版本号在 README 中没有给出。如果你用 Homebrew,注意 cask 名称是 markedit,不是 MarkEdit,大小写敏感。
扩展机制:CSS、JavaScript 和 CodeMirror extensions
MarkEdit 的自定义方式不是传统插件商店,而是围绕 CSS、JavaScript 和 CodeMirror extensions 展开。官方提供了三个扩展:MarkEdit-preview 用于显示预览面板,MarkEdit-theming 用于自定义主题,MarkEdit-ai-writer 用于 macOS Tahoe 或更高版本上的 Apple Intelligence 集成。这种设计意味着,如果你想增加一个新功能,比如自定义快捷键或特殊代码块处理,你需要自己编写 CodeMirror 6 扩展,并通过 MarkEdit-api(一个独立的 GitHub 仓库)来接入。这比 Electron 应用里用 Node.js 写插件门槛高,因为它要求你理解 CodeMirror 的 API 和 JavaScript 生态。但反过来,这也避免了插件间的依赖冲突,保持了核心应用的轻量。对于普通用户,可能只会用到官方扩展,但如果你有开发能力,扩展空间是开放的。
性能与正确性的权衡,以及一个明显限制
README 明确说,MarkEdit 不声称在单一维度最佳,而是在体积、速度、原生集成和正确性之间取舍。它提到处理 10 MB 文件「easily」,但没给出具体基准数据,所以这个说法只能当作预期,不能当作承诺。一个明显的限制是,它严格遵循 GFM 规范,拒绝任何私有语法。这意味着,你在其他编辑器里常用的 Pandoc 扩展语法、脚注、定义列表等,在 MarkEdit 里可能无法正确渲染。另外,虽然它基于 CodeMirror 6,但编辑器的外观和交互是原生的,这可能导致某些 Web 编辑器的习惯(比如某些快捷键)不适用。如果你是重度用户,依赖特定的 Markdown 方言,MarkEdit 可能是个错误选择。
与同类工具的实际差异
与 Electron 系的编辑器(比如 Typora 或 VS Code)相比,MarkEdit 的体积和内存占用优势明显,但代价是缺少插件生态和跨平台支持。与 Rust 编写的性能优先编辑器(比如 Zed 或 Lapce)相比,MarkEdit 更注重 macOS 原生集成,比如 force-touch 查词和 Writing Tools,这些是 Rust 编辑器通常不会实现的。与 TextKit 编辑器(比如 MWeb 或 Ulysses)相比,MarkEdit 在处理大文件时更流畅,因为它用 CodeMirror 6 的虚拟滚动,而不是 TextKit 的整文件加载。但 TextKit 编辑器往往提供更好的富文本导出和数据库管理,MarkEdit 则只做纯文本编辑。一个值得注意的差异是,MarkEdit 支持 AppleScript 和 Shortcuts 集成,这让你可以用自动化脚本控制它,而大多数 Web 技术编辑器做不到这点。
维护与许可:MIT 下的活跃项目
MarkEdit 的许可证是 MIT,这意味着你可以自由使用、修改和分发,只要保留版权声明。项目仓库显示最近一次推送是 2026 年 8 月,最新的发布版本是 v1.34.0,说明维护活跃。版本迭代频率大约是一个月一个 minor 版本,比如 v1.33.1 是 6 月,v1.33.0 是 6 月初,v1.34.0 是 8 月。这种节奏对于修复 bug 和适配新 macOS 版本是合理的。不过,由于项目理念是「intentionally minimal」,新功能开发会很保守,社区贡献者需要先在 issue 里讨论行为变更,而不是直接提 PR。这意味着,如果你想贡献一个功能,可能需要经历较长的讨论周期。另外,项目依赖 CodeMirror 6 和 ts-gyb,这些是外部库,它们的许可证是 MIT 或 BSD 类,但具体细节你需要查看各自的仓库。
编辑结论
MarkEdit 适合那些需要快速打开大文件、偏好原生 macOS 界面、且不依赖复杂插件生态的 Markdown 写作者。它不适合需要所见即所得排版、协作编辑或跨平台同步的用户,因为其定位是轻量编辑而非全功能 IDE。在采用前,建议先确认你常用的 Markdown 扩展语法(如脚注、数学公式)是否在 GFM 范围内,因为项目明确拒绝非标准语法。同时,如果你依赖 Shortcuts 或 AppleScript 自动化,应先测试 v1.34.0 的 AppleScript 接口是否覆盖你的工作流。最后,由于项目声称不收集数据,但未给出具体隐私政策细节,建议查看官方 wiki 的 Philosophy 页面确认数据处理的边界。
社区笔记