当前位置: 首页 > news >正文

Vex:免费开源的 .NET + Avalonia 跨平台 Markdown 编辑器

这次介绍一个新的桌面写作工具Vex维刻。Vex 是基于.NET 10 Avalonia 12构建的免费开源跨平台 Markdown 编辑器。它不做大而全的知识库也不复刻成熟商业编辑器当前主线很清楚Markdown 源码编辑、实时预览、文件管理、导出以及复制到内容平台。项目仓库https://github.com/dotnet9/VexReleasehttps://github.com/dotnet9/Vex/releases/tag/v1.0.0Vex 的 Slogan 是极简之力妙笔成章。先看编辑体验。下面这段 GIF 用 Vex 打开本文副本左侧继续写 Markdown右侧实时预览标题、引用、列表、代码块和状态栏统计都会跟着变化。写完以后Vex 可以把 Markdown 复制成适合微信公众号编辑器粘贴的 HTML。下面是从文件菜单选择“复制到公众号”再粘贴到公众号图文编辑器的过程。浏览器地址栏做了遮挡处理。不是 TyporaVex 确实参考过 Typora 的简洁菜单、专注写作和 Markdown 文件优先但它不是 Typora 复刻版。Typora 的所见即所得编辑体验非常成熟而把 Markdown 源码和最终排版无缝合在同一个编辑面里本质上要处理光标映射、选区、撤销重做、输入法、表格、图片、代码块和跨平台文本行为。Vex 当前不走这条路线。更现实的目标是做一个免费开源的.NET Avalonia 跨平台 Markdown 桌面编辑器把“写、看、查、导出、复制到发布平台”这条链路先做顺。v1.0.0v1.0.0发布于 2026 年 5 月 24 日是 Vex 的首个稳定版本。这个版本已经覆盖日常写作的基本闭环Markdown 源码编辑、实时预览、大纲导航、文档统计。智能列表续写、源码模式、编辑区当前行高亮。新建、打开、保存、另存为、打开文件夹、最近文档、拖拽打开、启动参数打开。文件重命名、删除、打开所在位置、外部变更检测与重载。查找替换、大小写/整词/正则匹配、命中计数和大文档防抖扫描。HTML、PNG、图像型 PDF、打印预览、复制 HTML 和复制到内容平台。本地图片、SVG 栅格化、任务列表、排版主题化导出、PDF 页眉页脚。多主题、多排版主题、紧凑布局、暗色模式细节优化。简体中文、繁体中文、英语、日语四套 UI 和帮助文档。多 RID 发布、压缩包、SHA256、release manifest以及可选 Windows MSIX 打包。当前主界面如下左侧是文件列表和大纲中央是 Markdown 源码编辑区右侧是 Avalonia 原生渲染的预览区底部状态栏显示保存状态、编码、行列号、词数和字符数。写作与预览Vex 的工作区是三栏结构左侧文件列表与大纲导航。中间基于 AvaloniaEdit 的 Markdown 编辑区。右侧基于 CodeWF.Markdown 的预览区。它没有把 Markdown 预览交给 WebView而是沿用 CodeWF.Markdown 的 Avalonia 控件渲染路线。主题、字体、图片、表格、代码块、任务列表、SVG 和导出链路都留在桌面控件体系里处理。长文档最需要的是大纲。Vex 会从标题结构里提取导航入口切到“大纲”后可以直接跳转到对应段落。只想专注源码时可以从视图菜单切换“源码模式”。它会临时收起侧栏和预览区退出时恢复原来的布局。视图菜单还补了“刷新预览”快捷键是F5。它会强制刷新预览绑定并给远程图片 URL 加版本查询参数适合封面或远程配图刚更新但预览仍命中旧缓存的情况。文件与发布文件菜单放的是写作工具最常用的动作新建、打开、打开文件夹、快速打开、最近文档、按编码重开、复制到内容平台、保存、另存为、属性、导出、打印和关闭。动态看更直观。文件菜单现在会按内容完整展开不再需要在菜单里二次滚动打开、保存、最近文件、编码重开、复制到内容平台、导出 HTML/PNG/PDF、打印都在同一条工作流里。几个细节比较实用打开文件夹后左侧文档列表可以在当前目录的 Markdown 文件之间切换。最近文档减少重复定位文件的成本。重新按编码打开保留 UTF-8、UTF-8 BOM、GB18030、Big5 等入口。复制到公众号、知乎、稀土掘金把“发布到哪里”也放进编辑流程这部分仍会继续按平台兼容性打磨。导出菜单支持 HTML、PNG、图像型 PDF 和 Word.docx本地图片、data:image、SVG/WebP 转换等边界也在持续补齐。对公众号作者来说真正高频的不是“保存一个 HTML 文件”而是写完后直接粘贴到微信公众号编辑器并尽量保留标题、段落、引用、列表、代码块和链接样式。Vex 当前就是沿着这条路径优化。查找替换长文档不能只靠眼睛扫。Vex 的查找栏支持查找、替换、下一个、替换、全部替换、关闭以及大小写、整词和正则匹配。下面继续用本文演示搜索Markdown再打开替换栏准备替换成更具体的词。查找栏会显示当前命中位置和总命中数。大文档扫描做了防抖处理替换路径也尽量使用 AvaloniaEdit 文档级Replace避免每次替换都重建整篇文本。主题、排版和语言外观入口放在帮助菜单下当前包含主题色、排版主题、紧凑布局和语言设置。主题色控制应用外壳排版主题控制 Markdown 正文。两者分开后可以组合出不同工作环境浅色外壳配简洁排版或暗色外壳配更适合代码阅读的排版主题。多语言当前覆盖简体中文繁体中文English日本語这部分由Lang.Avalonia.Json、Semi.Avalonia、Ursa.Avalonia 以及 Vex 自己的帮助文档共同组成。菜单、状态栏、错误详情、快速开始、更新日志、鸣谢和关于窗口都在本地化范围内。新手引导Vex 也是 CodeWF.AvaloniaControls 新增Guide引导控件的落地项目。首次启动时显示一次之后可从帮助菜单重新打开。引导覆盖文件菜单、导出菜单、段落/格式/视图菜单、主题菜单、左侧文件/大纲区域、编辑区、预览区和状态栏。最有价值的是菜单项引导。很多桌面软件入口藏在菜单或二级菜单里普通遮罩控件只能高亮页面上已经存在的按钮Vex 会在步骤切换时主动展开菜单再定位里面的MenuItem。左侧“文件/大纲”是TabControl引导到不同页签时需要先切换页签再刷新高亮位置。关于窗口展示软件名称、中文名、版本、编译时间、作者、网站和品牌信息。技术栈Vex 当前主要技术栈.NET 10Avalonia 12.0.3Prism.DryIoc.AvaloniaReactiveUI.AvaloniaSemi.AvaloniaUrsa.AvaloniaAvaloniaEditCodeWF.AvaloniaControlsCodeWF.MarkdownCodeWF.EventBusLang.Avalonia.Json目标框架是net10.0和net10.0-windows运行时标识覆盖win-x64linux-x64linux-arm64osx-x64osx-arm64Windows 发布路径启用 Native AOT并把最低 Windows 支持平台版本设到6.1非 Windows RID 走 self-contained single-file 发布。publish_vex_all.bat --package会生成压缩包、SHA256 文件和 release manifest。Release 里还有一个兼容性调整事件总线统一直接使用CodeWF.EventBus.EventBus.Default避开 DryIoc 事件总线注册路径改善 Windows 7 启动兼容性。构建与发布本地开发dotnet build Vex.slnx生成多平台发布产物.\publish_vex_all.bat --package准备 Windows MSIX 布局或安装包.\scripts\package_vex_msix.ps1 -RuntimeIdentifier win-x64 -PrepareOnly后续方向Vex 后续不会优先挑战所见即所得实时编辑而是继续围绕“编辑预览 发布复制”补基础能力继续优化复制到微信公众号的 HTML 结构和样式兼容性。补齐知乎、稀土掘金等平台的复制样式。增加公众号移动端预览效果。改进本地图片、相对路径和复制时的资源提示。优化大纲跳转、编辑区和预览区滚动联动。增加更多排版主题并允许保存自定义发布样式。继续完善 Word 导出的复杂排版、自动更新和安装包发布流程。继续打磨 Linux、macOS 下的字体、菜单、快捷键和打包体验。小结Vex 1.0.0 的重点不是复杂知识库而是把 Markdown 桌面写作工具的基本体验打通打开文件、写内容、看预览、按大纲跳转、查找替换、换主题、导出交付。文件夹切换、最近文档、外部变更重载、编码选择、复制到内容平台、多语言帮助、首次启动引导、状态栏统计这些单独看都不大但组合起来会直接影响它能不能进入日常写作流程。相关地址Vex 仓库https://github.com/dotnet9/VexRelease v1.0.0https://github.com/dotnet9/Vex/releases/tag/v1.0.0
http://www.zskr.cn/news/1401407.html

相关文章:

  • 联盛德 HLK-W806 (十二): 深度解析ST7567驱动配置与图形绘制优化
  • 超越HTTP:Nginx Stream模块实战TCP/UDP代理与负载均衡
  • Deep3D:基于深度学习的端到端2D转3D视频实时转换技术解析
  • FModel终极指南:免费探索虚幻引擎游戏资源的完整教程
  • GitHub加速插件:3分钟告别龟速下载,让代码克隆速度提升10倍
  • DrBERT-7GB:革命性法语生物医学AI模型,7GB医学数据预训练完全指南 [特殊字符]
  • Bugku CTF---RSA入门:从反编译到私钥求解
  • AutoCAD字体同步管理解决方案:FontCenter插件技术实现详解
  • 3个实用技巧:如何让课堂学习更高效自主
  • CSMM 软件能力成熟度模型:中国软件企业的自主能力提升路径
  • 小马智行第一季营收2.4亿:Robotaxi收入5910万 预计全年车队规模超3500辆
  • 终极Windows键盘效率神器:Win-Vind完整使用指南
  • 【新手避坑指南】ISE14.7点亮第一个LED:从代码到硬件的完整FPGA开发闭环
  • 终极SQL代码检查指南:如何用sql-lint告别数据库开发中的低级错误
  • AI编程助手配置优化:告别臃肿提示词,拥抱高效上下文工程
  • Chrony时间服务器
  • 微信消息自动转发工具:5分钟实现多群消息同步
  • Coze智能体开发:扣子 AI 编程概述
  • 终极指南:FinancialBERT-Sentiment-Analysis模型深度解析与实战应用
  • openpilot 2025技术展望:从规则驱动到AI原生驾驶系统的范式转变
  • 高性能视频渲染中的临时缓冲区优化技术:MPC Video Renderer 的实践应用
  • 如何快速上手Lemone-Router:5分钟完成法国税法文本分类的完整指南
  • 10个E5-large-en-ru应用场景:从检索到分类的完整解决方案
  • 通过curl命令快速测试Taotoken不同大模型API的响应效果
  • zhouhui/distiluse-base-multilingual-cased vs 其他句子嵌入模型:10个关键指标对比
  • UnrealPakViewer深度解析:虚幻引擎Pak文件可视化分析引擎的实现原理
  • 魔兽争霸3全面性能优化工具:5步解决画面变形和帧率限制问题
  • ESSA算法:基于LoRA奇异值的分布式进化搜索优化
  • STM32F103内部Flash读写避坑指南:从.map文件分析到实战配置(以Keil MDK为例)
  • Qwopus3.5-9B-Coder-GGUF工具调用实战:10个实用示例教你掌握Agent能力