Skip to content

Repository files navigation

md-view

轻量级 Markdown 预览器 — 右键即看,跨平台单文件

将 Markdown 文件转为 HTML,在默认浏览器中打开。没有编辑器 UI,没有插件市场,没有目录树——只看不编

特性

  • 🚀 单文件 — 编译后只有一个可执行文件,无运行时依赖
  • 🌍 跨平台 — Windows / macOS / Linux 同一套代码
  • 🪶 轻量 — 二进制 ~1.8 MB(-s -w 后)
  • ⚙️ 零配置 — 命令行传文件路径即可运行
  • 🖱️ 右键集成 — 支持注册到系统右键菜单(Windows)和「打开方式」(macOS/Linux)
  • 🎨 GitHub 风格 — CSS 自动适配系统深色/浅色模式

安装

方式一:从 Release 下载(推荐)

前往 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 显示帮助信息

Windows 使用指南

1. 安装可执行文件

  1. Releases 下载 md-view-windows-amd64.exe

  2. 重命名为 md-view.exe,放到固定位置,例如 C:\Tools\md-view.exe

  3. C:\Tools 加入系统 PATH

    设置 → 系统 → 关于 → 高级系统设置 → 环境变量
    → 系统变量 Path → 编辑 → 新建 → C:\Tools → 确定
    
  4. 重新打开 PowerShell,运行 md-view version 验证

2. 命令行预览

md-view C:\path\to\readme.md

执行流程:

  1. 读取 md 文件(自动处理 UTF-8 BOM)
  2. 转成 HTML(GitHub 风格,自动深色/浅色)
  3. 写入临时文件 %TEMP%\md_view_xxxxx.html
  4. 用默认浏览器打开
  5. 30 秒后自动清理临时文件

3. 右键菜单集成(推荐)

以管理员身份打开 PowerShell,运行:

md-view install

执行后会在注册表写入:

HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\md-view
    (默认) = 用 md-view 打开
    \command
        (默认) = "C:\Tools\md-view.exe" "%1"

之后右键任意 .md 文件 → 用 md-view 打开,默认浏览器会自动弹出预览。

4. 卸载右键菜单

以管理员身份运行:

md-view uninstall

5. 常见问题

右键菜单没出现?

确认:

  1. 是用管理员 PowerShell 跑的 md-view install

  2. 注册表项已写入,可运行下面命令验证:

    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),对所有用户生效。


macOS 使用指南

1. 安装可执行文件

# 下载(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/

2. 命令行预览

md-view ~/Documents/readme.md

3. 注册「打开方式」(可选)

macOS 上推荐通过系统对话框设置默认应用:

  1. 在 Finder 中右键任意 .md 文件 → 显示简介
  2. 找到「打开方式」一栏,选择 md-view(或其他编辑器)
  3. 点击「全部更改」,让所有 .md 文件都用这个应用打开

或使用 duti 命令行工具批量注册:

brew install duti
# 假设 md-view 已注册为可执行应用
duti -s com.example.md-view .md all

4. 卸载

sudo rm /usr/local/bin/md-view

Linux 使用指南

1. 安装可执行文件

# 下载(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/

2. 命令行预览

md-view ~/Documents/readme.md

会自动调用 xdg-open 打开默认浏览器。

3. 注册文件关联(可选)

创建 .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。

4. 卸载

rm ~/.local/share/applications/md-view.desktop
sudo rm /usr/local/bin/md-view
update-desktop-database ~/.local/share/applications/

支持的 Markdown 语法

语法 支持 示例
标题 H1–H6 # 标题
粗体 **粗体**
斜体 *斜体*
粗斜体 ***粗斜体***
删除线 ~~删除~~
代码块(带语言标注) ```go
行内代码 `code`
表格(含表头) | A | B |
引用 > 引用
有序列表 1. 项
无序列表 - 项
图片 ![alt](src)
链接 [text](url)
水平线 ---
HTML 转义 <script>&lt;script&gt;
UTF-8 BOM 处理 Windows 记事本兼容

GitHub Actions 自动构建

触发构建

推送 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 转义 安全性
空文件 边界测试

路线图

v1.0(MVP)✅

  • 基本 Markdown 语法解析
  • 表格渲染(已修复表头丢失 Bug)
  • 跨平台浏览器打开
  • 深色/浅色模式自适应
  • 临时文件自动清理
  • Windows 右键菜单集成

v1.1

  • 支持从 stdin 读取(管道模式)
  • 支持文件拖拽到 EXE 图标
  • md-view install 在 macOS/Linux 上的自动化注册

v1.2

  • 任务栏图标(显示文件路径)
  • 对超大文件(>10MB)的分段渲染
  • 自定义 CSS 配置文件(~/.md-view.css

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages