轻量级 Markdown 预览器 — 右键即看,跨平台单文件
将 Markdown 文件转为 HTML,在默认浏览器中打开。没有编辑器 UI,没有插件市场,没有目录树——只看不编。
- 🚀 单文件 — 编译后只有一个可执行文件,无运行时依赖
- 🌍 跨平台 — Windows / macOS / Linux 同一套代码
- 🪶 轻量 — 二进制 ~1.8 MB(
-s -w后) - ⚙️ 零配置 — 命令行传文件路径即可运行
- 🖱️ 右键集成 — 支持注册到系统右键菜单(Windows)和「打开方式」(macOS/Linux)
- 🎨 GitHub 风格 — CSS 自动适配系统深色/浅色模式
前往 Releases 下载对应平台的可执行文件:
| 平台 | 架构 | 文件名 |
|---|---|---|
| Windows | Intel/AMD 64 位 | md-view-windows-amd64.exe |
| Windows | ARM64(Surface Pro X 等) | md-view-windows-arm64.exe |
| macOS | Apple Silicon (M1/M2/M3) | md-view-darwin-arm64 |
| macOS | Intel | md-view-darwin-amd64 |
| Linux | 64 位 | md-view-linux-amd64 |
| Linux | ARM64(树莓派等) | md-view-linux-arm64 |
# 运行(需本机已装 Go)
go run main.go readme.md
# 测试
go test ./...
# 当前平台编译
go build -trimpath -ldflags="-s -w" -o md-view .
# 跨平台编译
GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o dist/md-view-windows-amd64.exe .
GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags="-s -w" -o dist/md-view-darwin-arm64 .
GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o dist/md-view-linux-amd64 .| 命令 | 作用 | 是否需要管理员 |
|---|---|---|
md-view <file.md> |
预览 Markdown 文件 | 否 |
md-view install |
注册右键菜单 / 文件关联 | Windows 需管理员 |
md-view uninstall |
取消右键菜单 / 文件关联 | Windows 需管理员 |
md-view version |
显示版本号 | 否 |
md-view help |
显示帮助信息 | 否 |
-
从 Releases 下载
md-view-windows-amd64.exe -
重命名为
md-view.exe,放到固定位置,例如C:\Tools\md-view.exe -
把
C:\Tools加入系统PATH:设置 → 系统 → 关于 → 高级系统设置 → 环境变量 → 系统变量 Path → 编辑 → 新建 → C:\Tools → 确定 -
重新打开 PowerShell,运行
md-view version验证
md-view C:\path\to\readme.md执行流程:
- 读取 md 文件(自动处理 UTF-8 BOM)
- 转成 HTML(GitHub 风格,自动深色/浅色)
- 写入临时文件
%TEMP%\md_view_xxxxx.html - 用默认浏览器打开
- 30 秒后自动清理临时文件
以管理员身份打开 PowerShell,运行:
md-view install执行后会在注册表写入:
HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\md-view
(默认) = 用 md-view 打开
\command
(默认) = "C:\Tools\md-view.exe" "%1"
之后右键任意 .md 文件 → 用 md-view 打开,默认浏览器会自动弹出预览。
以管理员身份运行:
md-view uninstall右键菜单没出现?
确认:
-
是用管理员 PowerShell 跑的
md-view install -
注册表项已写入,可运行下面命令验证:
reg query "HKCR\SystemFileAssociations\.md\shell\md-view"
双击 exe 闪退?
这是正常的——md-view 是命令行工具,没传参数就会输出用法然后退出。请通过命令行或右键菜单使用。
想给所有用户都装上?
把 exe 放到 C:\Program Files\md-view\,然后用管理员 PowerShell 跑 md-view install。注册表项是 HKCR(即 HKEY_CLASSES_ROOT),对所有用户生效。
# 下载(Apple Silicon 为例)
curl -L -o md-view https://github.com/kyeo-hub/mdview/releases/latest/download/md-view-darwin-arm64
# 赋予执行权限
chmod +x md-view
# 移到 PATH 中
sudo mv md-view /usr/local/bin/md-view ~/Documents/readme.mdmacOS 上推荐通过系统对话框设置默认应用:
- 在 Finder 中右键任意 .md 文件 → 显示简介
- 找到「打开方式」一栏,选择
md-view(或其他编辑器) - 点击「全部更改」,让所有
.md文件都用这个应用打开
或使用 duti 命令行工具批量注册:
brew install duti
# 假设 md-view 已注册为可执行应用
duti -s com.example.md-view .md allsudo rm /usr/local/bin/md-view# 下载(amd64 为例)
curl -L -o md-view https://github.com/kyeo-hub/mdview/releases/latest/download/md-view-linux-amd64
# 赋予执行权限
chmod +x md-view
# 移到 PATH 中
sudo mv md-view /usr/local/bin/md-view ~/Documents/readme.md会自动调用 xdg-open 打开默认浏览器。
创建 .desktop 文件:
cat > ~/.local/share/applications/md-view.desktop << 'EOF'
[Desktop Entry]
Name=md-view
Exec=md-view %f
Type=Application
MimeType=text/markdown;
EOF
# 更新数据库
update-desktop-database ~/.local/share/applications/之后在文件管理器中右键 .md 文件 → 打开方式 → md-view。
rm ~/.local/share/applications/md-view.desktop
sudo rm /usr/local/bin/md-view
update-desktop-database ~/.local/share/applications/| 语法 | 支持 | 示例 |
|---|---|---|
| 标题 H1–H6 | ✅ | # 标题 |
| 粗体 | ✅ | **粗体** |
| 斜体 | ✅ | *斜体* |
| 粗斜体 | ✅ | ***粗斜体*** |
| 删除线 | ✅ | ~~删除~~ |
| 代码块(带语言标注) | ✅ | ```go |
| 行内代码 | ✅ | `code` |
| 表格(含表头) | ✅ | | A | B | |
| 引用 | ✅ | > 引用 |
| 有序列表 | ✅ | 1. 项 |
| 无序列表 | ✅ | - 项 |
| 图片 | ✅ |  |
| 链接 | ✅ | [text](url) |
| 水平线 | ✅ | --- |
| HTML 转义 | ✅ | <script> → <script> |
| UTF-8 BOM 处理 | ✅ | Windows 记事本兼容 |
推送 v* 标签即可触发三端 × 双架构构建并自动发布 Release:
git tag v1.0.0
git push origin v1.0.0| 平台 | amd64 | arm64 | Runner |
|---|---|---|---|
| Windows | ✅ | ✅ | ubuntu-latest |
| macOS | ✅ | ✅ | macos-13 / macos-14 |
| Linux | ✅ | ✅ | ubuntu-latest |
CGO_ENABLED=0— 纯静态二进制-trimpath— 去掉编译路径-ldflags="-s -w"— 去掉符号表和调试信息
| 优化步骤 | 体积 |
|---|---|
| 裸编译 | ~2.5 MB |
-s -w |
~1.8 MB |
+ UPX |
~0.9 MB |
md-view/
├── main.go # 入口:参数解析、调度
├── parser.go # Markdown → HTML 解析器(逐行扫描)
├── render.go # HTML 模板 + CSS + 行内解析
├── browser.go # 跨平台浏览器调用
├── encoding.go # BOM / UTF-16 处理
├── tempfile.go # 临时 HTML 写入与清理
├── install.go # 非 Windows 平台 install/uninstall 提示
├── install_windows.go # Windows 注册表右键菜单注册
├── parser_test.go # 解析器单元测试
├── .github/workflows/
│ └── build.yml # GitHub Actions 跨平台构建
└── README.md
go test ./...
# 测试覆盖率
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out| 场景 | 说明 |
|---|---|
| 标题 H1–H6 | 各种层级 |
| 粗体/斜体/删除线 | 行内标记组合 |
| 代码块(含语言标注) | 转义测试 |
| 表格(含表头) | 表头 Bug 回归 |
| 引用 / 列表 | 块级元素 |
| 图片 / 链接 | 行内元素 |
| HTML 转义 | 安全性 |
| 空文件 | 边界测试 |
- 基本 Markdown 语法解析
- 表格渲染(已修复表头丢失 Bug)
- 跨平台浏览器打开
- 深色/浅色模式自适应
- 临时文件自动清理
- Windows 右键菜单集成
- 支持从 stdin 读取(管道模式)
- 支持文件拖拽到 EXE 图标
-
md-view install在 macOS/Linux 上的自动化注册
- 任务栏图标(显示文件路径)
- 对超大文件(>10MB)的分段渲染
- 自定义 CSS 配置文件(
~/.md-view.css)
MIT