< 返回版块

manyougz 发表于 2026-05-10 16:21

Tags:gpui,editor,markdown,wysiwyg

在学习 Zed 团队开发的 GPUI crate 后搓了个支持所见即所得模式的 markdown 编辑器:Velotype

pv

Velotype 是一个基于 Rust 与 GPUI 的块级 Markdown 编辑器,支持所见即所得模式(WYSIWYG)和 Markdown 原文本编辑双模式。项目地址:https://github.com/manyougz/velotype

项目仍处于早期阶段,但核心方向已经稳定:原生 UI、即时渲染编辑、源文本兜底、规范化 Markdown 序列化,以及覆盖颜色、字体、间距和布局 token 的自定义能力。

特性

  • 🧱 Block 模型: Markdown 结构会被表达为可编辑块,让文档结构清晰可控易扩展,无需预览窗同步循环。
  • ⚡ 原生 UI: 基于 GPUI 的桌面原生渲染,不依赖 Electron、Tauri 或任何 WebView 外壳。
  • ✍️ 编辑模式: Velotype 支持所见即所得模式(WYSIWYG)和原文本编辑两种模式,满足常见编辑场景需求。
  • 🚀 性能与稳定: Rust 驱动解析、状态更新和渲染;解析策略遵循标准导向,并在不稳定场景回退为 raw Markdown。
  • 🎨 主题自定义: 主题可自定义全局颜色、字体、间距、菜单、弹窗、编辑器布局 token 和语言包。
  • 📦 便携单文件: Velotype 编译后以单文件形式存在,无需安装,原生便携,支持 Windows、Linux 和 macOS 平台。

Velotype 已经支持将当前 Markdown 文档导出为 HTML 和 PDF。HTML 导出会把当前主题映射为 CSS,PDF 导出复用同一套主题化 HTML 管线,以保证视觉输出一致。

Velotype 目标支持 Windows、Linux 和 macOS。应用天然适合作为独立二进制文件分发,release 构建可以直接运行,无需安装。

快速开始

1. 下载 release

Velotype Releases 页面下载 Windows、Linux 或 macOS 构建。Release 产物按便携桌面程序设计,可直接运行。

2. 从源码构建

前置需求:

  • Git
  • 支持 Rust 2024 edition 的 Rust toolchain
  • Cargo
  • GPUI 与系统工具链所需的平台原生构建依赖

本地构建并运行 Velotype:

git clone https://github.com/manyougz/velotype.git
cargo build --release

如果一切正常,构建产物将在 target/release 下储存,取出可执行文件即可使用

Roadmap

Velotype 目前已经支持几乎所有基础 Markdown 语法,以及绝大多数常见扩展 Markdown 语法,包括标题、段落、列表、任务列表、引用、callout、表格、代码块、行内格式、链接、reference-style 链接与图片、脚注、独立图片、注释块和安全的原生 HTML 处理。

语法支持仍会持续更新。仍在计划中的能力包括:

  • 脑图绘图与渲染支持
  • LaTeX 数学语法与渲染支持
  • 内置图床
  • 更完善的 IME 功能

自定义主题 & 翻译

Velotype 将视觉主题和界面语言包拆分管理。主题文件可以覆盖全局颜色、字体、尺寸、菜单、弹窗、表格控件、图片占位、代码高亮颜色,以及布局相关 token。缺失字段或空值会继承内置 Velotype 默认值,因此自定义主题既可以非常小,也可以完整覆盖。

语言包也采用相同的局部配置策略。缺失文案会回退到英文,导入后的语言包会在写入应用配置目录前进行规范化。

架构

Layer Responsibility
editor 窗口级编辑器状态:视图模式、保存/关闭流程、撤销、选择、source mapping、树结构变更、导出和文件拖拽。
components::block 可编辑块运行时、GPUI 输入处理、块渲染、块事件、图片/表格/代码块运行时状态。
components::markdown Markdown 数据模型,以及 inline、link、image、footnote、table、HTML、code highlight 的解析与序列化辅助逻辑。
export HTML 与 PDF 导出管线。
theme 视觉主题 token、内置主题默认值、自定义主题导入和全局主题管理。
i18n 内置 UI 文案、自定义语言包、系统 locale 匹配和运行时语言切换。
net 远程图片加载所需的 HTTP client 集成。

编辑器使用原生 block tree 作为运行时模型。导入时,稳定支持的 Markdown 会转换为结构化块;保存时,block tree 会重新序列化为规范化 Markdown。对于当前运行时不稳定支持的语法,Velotype 会保留原始源码,并保持其可见、可编辑。

贡献

这个仓库仍在快速迭代。报告解析或渲染问题时,请尽量提供:

  • 最小 Markdown 输入;
  • 期望的渲染或序列化结果;
  • 实际结果;
  • 问题发生的编辑模式。

提交代码变更时,建议优先提供小补丁,并基于现有 parser/runtime 模型扩展,而不是整体替换现有实现。

许可证

Velotype 使用 Apache License 2.0


Ext Link: https://github.com/manyougz/velotype

评论区

写评论

还没有评论

1 共 0 条评论, 1 页