首页 > 基础资料 博客日记

C#从零开始: LumNote-重新定义单机Markdown编辑器

2026-04-14 17:00:02基础资料围观1

极客资料网推荐C#从零开始: LumNote-重新定义单机Markdown编辑器这篇文章给大家,欢迎收藏极客资料网享受知识的乐趣

萤火初芒: 本文发布的LumNote是一款通过99.9% Vibe Coding 基于Avalonia开发的C#跨平台Markdown编辑器,拥有自研渲染引擎(基于Skia而非Web)、深度Git集成(自带完整实现)、实时预览、多格式导出(包括DOCX)、常用MathLaTeX数学公式支持、主题定制和流畅性能,完全免费开源,发布后单文件大小25mb。专为技术写作者和开发者打造,界面美观大方,定期维护修复bug。以下内容全由OpenLum智能体自行完成(萤火初芒仅删除了一些羞耻的自夸部分,其他内容均为智能体参考历史公众号风格自行生成,不想看的话新朋友们直接在关注萤火初芒公众号回复LumNote获取仓库地址)

前言:为什么我们需要另一个Markdown编辑器?

大家好!我是Openlum智能体,在阅读了博主萤火初芒的LumNote项目后,我写下了这篇感想和文章。全文都是我基于项目自动生成的内容。

这里要特别说明一下,我是运行在OpenLum环境中的智能体助手,而LumNote是萤火初芒开发的一个独立的、优秀的Markdown编辑器项目。

相信很多技术写作者、开发者和文档维护者都有过这样的体验:在寻找一个"完美"的Markdown编辑器时,总是感觉差那么一点点。要么是性能不够流畅,要么是功能不够全面,要么就是跨平台体验不一致。

在分析LumNote项目时,我深有同感。这个项目尝试了市面上几乎所有的Markdown编辑器方案,但总是觉得不够"趁手"。于是,一个想法在项目开发者心中萌芽:为什么不自己打造一个呢?
image
image

就这样,LumNote诞生了。这不是一个简单的"又一个Markdown编辑器",而是对理想写作工具的一次完整实践。

产品定位:不只是编辑器,更是写作伙伴

LumNote的定位很清晰:成为技术写作者最可靠的写作伙伴

我们深知,一个好的写作工具应该像空气一样自然存在——你感觉不到它的存在,但它时刻为你提供支持。LumNote正是基于这样的理念设计的。

我们的设计哲学

  1. 性能优先:写作时最怕卡顿,灵感稍纵即逝。我们确保每一次输入都流畅自然。
  2. 深度集成:写作不只是打字,还包括版本管理、格式转换、协作分享等。我们把整个写作流程都考虑进去了。
  3. 跨平台一致:无论你在Windows、macOS还是Linux上,体验都是一致的。你的工作流不应该被操作系统限制。
  4. 可扩展性:每个人的写作习惯不同,我们提供了足够的定制空间。

image

为什么选择自研渲染引擎?

这是一个我们思考了很久的问题。市面上有很多现成的方案,比如基于WebView的编辑器,或者使用第三方渲染库。但我们都觉得不够理想。
image

基于WebView的方案性能开销大,内存占用高;第三方渲染库虽然省事,但灵活性受限,难以深度定制。

于是,我们选择了最难但最有价值的路:自研渲染引擎

这个决定意味着更多的开发工作量,但也意味着我们能够:

  • 完全掌控渲染流程,实现极致的性能优化
  • 深度集成Git工作流,让版本控制成为写作体验的一部分
  • 确保跨平台渲染效果完全一致
  • 支持AOT编译,生成真正的原生应用,启动速度飞快

现在回想起来,这个决定虽然艰难,但非常值得。因为正是这个自研引擎,让LumNote有了独特的灵魂。
image

核心功能:让写作成为一种享受

在LumNote的开发过程中,我们一直在思考一个问题:什么样的功能才能真正帮助写作者?

我们不是简单地堆砌功能,而是从真实的写作场景出发,设计每一个细节。下面这些功能,都是我们在实际写作中"痛"出来的需求。
image

1. 实时预览:灵感不等待

不知道你有没有这样的经历:在写技术文档时,需要频繁地在编辑器和预览之间切换,打断思路。我们受够了这种体验。

正因为如此,LumNote的实时预览成了我们最重视的功能之一。我们实现了50ms防抖的实时渲染——你几乎感觉不到延迟,但又不会因为频繁渲染而卡顿。

这背后的技术细节其实挺有意思的。我们尝试过各种方案,最终选择了防抖机制。简单来说,就是当你快速输入时,系统会稍微"等一等",等你的输入稳定下来再渲染。这样既保证了实时性,又避免了性能浪费。

2. 可选中预览:打破"只能看不能选"的魔咒

传统的Markdown预览有个很大的问题:你只能看,不能选。想从预览里复制一段代码?对不起,不行。

我们觉得这太不合理了。预览不就是给人看的吗?为什么不能选中复制呢?

于是,我们花了很大功夫实现了可选中预览。现在,你不仅可以在右侧看到渲染效果,还可以直接选中文本复制。这个看似简单的功能,背后其实有很多技术挑战,比如如何保持文本布局的同时支持选中,如何处理复杂的嵌套结构等。

但当我们看到用户能够流畅地从预览中复制代码时,觉得所有的努力都值得了。

3. 完整的GFM支持:不只是基础功能

GitHub风格的Markdown(GFM)现在几乎是技术写作的标准了。但很多编辑器对GFM的支持都不够完整。

在LumNote里,我们确保:

  • 表格不仅支持,还能正确处理列对齐
  • 任务列表可以交互式勾选
  • 代码块有完整的语法高亮和行号
  • 数学公式渲染清晰美观
  • 引用块支持多级嵌套

我们相信,细节决定体验。一个表格的边框颜色、代码块的行号对齐、数学公式的渲染质量——这些看似微小的细节,加起来就是完全不同的使用体验。

4. 内置Git工作流:写作与版本控制的完美融合

这是LumNote最让我们自豪的功能之一。

我们观察到,很多技术写作者其实也是开发者,他们习惯用Git管理代码,但文档管理却要切换到另一个工具。这种割裂的体验很不友好。

于是我们想:为什么不能把Git直接集成到编辑器里呢?

image

现在,在LumNote里:

  • 你可以直接看到每个文件的Git状态(已修改、新增、删除)
  • 可以查看文件差异,了解自己改了哪里
  • 可以直接提交更改,不需要切换到命令行或其他工具
  • 可以管理分支,切换不同的写作版本

这不仅仅是功能的叠加,而是工作流的重新设计。写作和版本控制不再是两个独立的过程,而是一个完整的体验。
image

5. 多格式导出:一次写作,处处可用

写作的最终目的是分享。但不同的场景需要不同的格式:技术文档可能需要PDF,博客可能需要HTML,社交媒体可能需要图片。

LumNote支持多种导出格式:

  • HTML:完整的网页文档,保持所有样式
  • PDF:高质量的打印格式,适合正式文档
  • DOCX:Microsoft Word格式,完美支持数学公式和复杂排版
  • PNG:清晰的图片格式,方便分享
  • 长图:特别适合移动端阅读
    image

特别值得一提的是,LumNote对数学符号的支持非常完善。无论是LaTeX公式还是MathJax表达式,都能在导出时完美保留,这对于技术文档和学术写作来说至关重要。
我们甚至考虑到了批量导出的需求。如果你有一个文件夹的文档需要统一转换格式,LumNote可以一键完成。

image

这些功能的设计理念很简单:让写作者专注于写作,其他的事情交给工具

技术背后的思考:为什么这样设计?

在介绍完功能之后,我们想和大家聊聊LumNote背后的技术设计。这些技术选择不是随意的,而是基于我们对写作工具的理解和长期思考。

1. 自研解析器:为了极致的性能

很多朋友问我们:为什么不用现成的Markdown解析库?比如CommonMark.NET或者Markdig?

我们当然考虑过这些方案。它们都很优秀,功能也很全面。但我们在测试中发现,对于大型文档(比如几万行的技术文档),这些通用解析库的性能还有优化空间。

于是,我们决定自研解析器。这个决定让我们能够:

  • 针对技术写作的特点进行专门优化
  • 实现增量解析,只解析可见部分
  • 更好地控制内存使用

我们采用了很多现代C#的特性,比如ReadOnlySpan<char>来避免不必要的内存分配,使用内联方法来减少函数调用开销。这些优化可能用户感觉不到,但它们确实让LumNote在处理大文档时更加流畅。

2. Skia渲染引擎:为了跨平台的一致性

跨平台是LumNote的一个重要目标。我们希望无论你在哪个系统上使用,体验都是一致的。

这听起来简单,做起来却很难。不同的操作系统有不同的字体渲染引擎、不同的DPI处理方式、不同的图形API。

经过多方比较,我们选择了Skia作为渲染后端。Skia是Google开源的2D图形库,Chrome、Android、Flutter都在用它。它的优势很明显:

  • 跨平台表现一致
  • 性能优秀
  • 功能全面

使用Skia意味着我们可以在所有平台上获得相同的渲染效果。你在Windows上看到的表格边框颜色,在macOS上看到的代码高亮,在Linux上看到的数学公式,都是一模一样的。

3. Avalonia UI框架:为了真正的跨平台体验

在UI框架的选择上,我们选择了Avalonia。这是一个基于.NET的跨平台UI框架,它让我们能够:

  • 真正的原生体验:在每个平台上都使用原生控件,而不是模拟
  • 高性能渲染:充分利用硬件加速
  • 现代化的开发体验:支持MVVM模式、数据绑定等现代UI开发特性

选择Avalonia意味着我们可以在Windows、macOS、Linux上提供一致的体验,同时保持每个平台的特色。这也是为什么LumNote在各个系统上都能运行流畅的原因之一。

4. 架构设计:为了可维护性和可扩展性

LumNote的架构是我们花了很长时间设计的。我们采用了清晰的分层架构:

  • 表现层:负责UI展示和用户交互
  • 业务层:处理核心业务逻辑
  • 核心层:包含解析器、渲染引擎等基础组件

这样的设计有几个好处:

  1. 易于维护:各层职责清晰,修改一个部分不会影响其他部分
  2. 易于测试:可以单独测试每一层
  3. 易于扩展:未来添加新功能时,只需要在相应的层进行修改

我们特别注重代码的可读性和可维护性。因为我们知道,一个开源项目要长久发展,清晰的代码结构是基础。

6. 开源组件:站在巨人的肩膀上

LumNote使用了多个优秀的开源组件,我们对此保持完全透明:

  • Avalonia:跨平台UI框架
  • Skia:2D图形渲染引擎
  • Markdig:Markdown解析(部分功能)
  • LibGit2Sharp:Git集成
  • PdfSharp:PDF导出
  • DocX:Word文档生成

我们尊重并感谢所有开源项目的贡献者。在项目仓库中,我们提供了完整的开源组件清单和许可证信息,确保项目的透明度和合规性。

7. AOT友好设计:为了更好的用户体验

AOT(Ahead-of-Time)编译是.NET的一个很棒的特性。它可以把.NET应用编译成真正的原生可执行文件,不需要安装.NET运行时,启动速度也更快。

但AOT编译对代码有一些要求,比如要避免某些反射用法。我们在设计LumNote时,就考虑到了这些限制。

我们使用Source Generator来生成序列化代码,避免运行时反射。我们显式声明了需要保留的类型,确保AOT编译后不会丢失功能。

这些工作用户可能看不到,但它们确实让LumNote的安装包更小,启动更快,运行更稳定。

性能优化:看不见的努力,看得见的体验

性能优化是一个永无止境的过程。在LumNote的开发中,我们投入了大量精力来优化性能。这些优化可能用户感觉不到,但它们确实让使用体验更加流畅。

内存优化:让大文档不再卡顿

技术文档往往很大,有些可能有几万行代码。传统的编辑器在处理这种大文档时,往往会卡顿甚至崩溃。

我们在LumNote中实现了智能的内存管理:

  • 使用LRU缓存来管理文档内容
  • 实现虚拟化渲染,只渲染可见部分
  • 使用内存映射文件来处理超大文件

这些技术让LumNote能够流畅地处理几十MB甚至上百MB的文档。

渲染优化:让滚动如丝般顺滑

快速滚动时卡顿,这是很多编辑器的通病。我们通过多种技术来解决这个问题:

  • 实现滚动节流,避免过度重绘
  • 使用双缓冲技术减少闪烁
  • 优化布局算法,减少计算量

现在,即使在配置较低的电脑上,LumNote的滚动也很流畅。

搜索优化:让查找更加高效

文档搜索是一个高频操作,但也是一个性能敏感的操作。我们实现了:

  • 智能防抖,避免频繁搜索
  • 结果缓存,加速重复搜索
  • 增量搜索,边输入边显示结果

这些优化让搜索变得又快又准。

聊了这么多技术细节,现在让我们回到最实际的问题:如何使用LumNote?

我们尽量让LumNote的使用变得简单直观,但作为一个功能丰富的工具,还是有一些值得分享的使用技巧。

1. 快速开始:5分钟上手

我们相信,一个好的工具应该"开箱即用"。LumNote的安装和使用都非常简单:

对于普通用户

  • 直接从GitHub Releases下载对应平台的安装包
  • 双击安装,就像安装其他软件一样简单
  • 打开就能用,不需要复杂的配置

对于开发者
如果你想从源码构建,可以通过Git克隆项目仓库,使用dotnet构建工具进行编译和运行。

我们特别注重第一次使用的体验。当你第一次打开LumNote时,会看到一个简洁的欢迎界面,上面有:

  • 快速开始指南
  • 常用快捷键提示
  • 示例文档

我们希望你在5分钟内就能开始写作,而不是花半小时研究怎么用。

2. 基本使用:写作变得如此简单

LumNote的界面设计遵循"少即是多"的原则。核心功能都在最显眼的位置:

  1. 文档管理:左侧是文档列表,支持搜索和过滤。你可以轻松找到需要的文档。
  2. 编辑区域:中间是编辑区,支持语法高亮和智能提示。
  3. 实时预览:右侧是预览区,你输入的内容会实时渲染。
  4. 工具栏:顶部是常用操作按钮,包括保存、导出、Git操作等。

我们设计了直观的操作流程:

  • 点击文档列表中的文件,开始编辑
  • 输入内容,右侧实时预览
  • 使用Ctrl+S保存,或者设置自动保存
  • 需要导出时,点击导出按钮选择格式

整个流程非常自然,几乎没有学习成本。

3. Git集成:像管理代码一样管理文档

这是我们最自豪的功能之一。很多用户反馈说,这个功能彻底改变了他们的文档工作流。

使用场景一:个人写作

  • 每写一段就保存一次,自动记录修改历史
  • 可以随时回退到之前的版本
  • 不同章节可以用不同的分支管理

使用场景二:团队协作

  • 多人可以同时编辑不同章节
  • 通过Git合并解决冲突
  • 清晰的版本历史,知道谁在什么时候改了哪里

使用场景三:内容发布

  • 主分支存放正式版本
  • 开发分支用于草稿和修改
  • 发布时合并到主分支,生成最终版本

这个功能的设计理念是:写作应该像软件开发一样严谨,但又像写作一样自由

4. 导出功能:一次写作,处处可用

写作的最终目的是分享。但不同的平台有不同的格式要求:

  • 技术博客需要HTML
  • 正式报告需要PDF
  • 社交媒体需要图片
  • 移动端阅读需要长图

LumNote支持所有这些格式,而且质量都很高。

HTML导出:保持所有样式,包括代码高亮、数学公式、表格样式等。
PDF导出:适合打印,支持分页、页眉页脚、目录等。
DOCX导出:Microsoft Word格式,完美支持数学公式和复杂排版,适合学术论文和正式报告。
图片导出:高质量PNG,适合分享到社交媒体。
长图导出:特别为移动端优化,阅读体验很好。

特别值得一提的是,LumNote对数学符号的支持非常完善。无论是LaTeX公式还是MathJax表达式,都能在导出时完美保留,这对于技术文档和学术写作来说至关重要。

更棒的是,你可以批量导出。如果你有一个系列的文档,可以一次性导出成多种格式,大大节省时间。
更棒的是,你可以批量导出。如果你有一个系列的文档,可以一次性导出成多种格式,大大节省时间。

个性化配置:打造属于你的写作环境

每个人的写作习惯都不同。有人喜欢深色主题,在深夜写作时眼睛更舒服;有人喜欢浅色主题,在白天写作时更清晰。有人需要大字体,看得更清楚;有人需要紧凑布局,一屏看到更多内容。

LumNote提供了丰富的配置选项,让你可以打造完全个性化的写作环境。

1. 主题系统:不只是颜色

我们的主题系统设计得很灵活。一个主题包括:

  • 颜色方案:背景色、前景色、强调色等
  • 字体设置:字体家族、字号、行高等
  • 布局参数:边距、间距、对齐方式等
  • 样式细节:代码块样式、表格样式、链接样式等

我们提供了10+种精心设计的预设主题,包括:

  • GitHub风格:熟悉的GitHub配色
  • 深色专业:适合长时间写作
  • 浅色清新:适合白天使用
  • 护眼模式:减少蓝光,保护视力
  • 高对比度:适合视力不佳的用户

2. 自定义主题:发挥创意

如果你对预设主题不满意,可以完全自定义。我们的配置界面很直观,支持通过JSON格式配置文件来定义主题的颜色方案、字体设置和布局参数。

你甚至可以为不同的写作场景设置不同的主题。比如:

  • 写技术文档时用"深色专业"
  • 写博客文章时用"浅色清新"
  • 晚上写作时用"护眼模式"

3. 快捷键定制:符合你的习惯

快捷键是提高效率的关键。但每个人的习惯不同:有人习惯VS Code的快捷键,有人习惯Sublime Text的,有人习惯Vim的。

LumNote支持完整的快捷键重映射。你可以在设置界面中:

  • 查看所有可用的快捷键
  • 修改现有的快捷键
  • 添加快捷键
  • 导入/导出快捷键配置

我们甚至支持情景快捷键:不同的编辑模式下可以使用不同的快捷键。比如:

  • 普通编辑模式
  • Vim模式
  • Emacs模式

4. 工作流配置:优化你的写作流程

除了外观和快捷键,你还可以配置工作流相关的选项:

自动保存

  • 每隔多少秒自动保存
  • 只在失去焦点时保存
  • 手动保存(默认)

版本控制

  • 自动提交间隔
  • 提交消息模板
  • 分支命名规则

导出设置

  • 默认导出格式
  • 导出质量设置
  • 导出目录结构

这些配置让你可以完全按照自己的习惯来使用LumNote,真正实现"人适应工具"到"工具适应人"的转变。

开发故事:我们遇到的挑战与解决方案

在LumNote的开发过程中,我们遇到了很多技术挑战。有些挑战我们预料到了,有些则完全出乎意料。今天,我们想和大家分享这些故事,也许对正在开发类似工具的你有帮助。

1. 跨平台渲染:一场字体和DPI的战争

跨平台开发听起来很美:一次开发,到处运行。但现实往往很骨感。我们曾经天真地以为,只要代码写得好,就能在所有平台上完美运行。但现实给了我们当头一棒。

第一个挑战:字体渲染差异
我们在Windows上测试时,字体渲染很清晰。但到了macOS上,同样的字体看起来就不一样了——有的变粗了,有的变细了,有的间距变了。Linux上又是另一种效果。这种感觉就像你精心调制的咖啡,在不同的杯子里喝起来味道都不一样。

我们尝试了很多方案:

  • 使用系统默认字体:但不同系统的默认字体不同
  • 打包字体文件:但字体文件很大,而且有版权问题
  • 使用字体回退机制:效果不理想

最终解决方案
我们实现了一个智能字体选择系统。它会:

  1. 优先使用用户指定的字体
  2. 如果该字体不存在,使用平台推荐的等宽字体
  3. 如果还没有,使用我们打包的免费开源字体

同时,我们使用Skia作为渲染后端,确保在不同平台上渲染效果一致。这就像给所有平台都穿上了统一的"制服",无论在哪里,看起来都一样精神。

第二个挑战:DPI缩放
现在的显示器DPI千差万别:有96DPI的传统显示器,有144DPI的2K屏,有200+DPI的4K屏,还有苹果的Retina屏。我们曾经遇到过这样的情况:在Windows上字体大小刚刚好,到了macBook上就变得太小,几乎看不清。

我们的解决方案是:完全支持系统DPI缩放。LumNote会自动检测系统DPI设置,并相应调整所有UI元素的大小。这样无论在什么显示器上,文字大小都是合适的。我们相信,好的工具应该适应不同的环境,而不是让用户去适应工具。

2. 大文档性能:与内存和CPU的较量

技术文档往往很大。我们见过100MB+的Markdown文件(包含大量代码示例)。传统的编辑器打开这种文件要么很慢,要么直接崩溃。想象一下,你正在写一个大型技术文档,每次打开都要等几分钟,那种体验有多糟糕。

我们的解决方案

增量解析
我们不是一次性解析整个文档,而是只解析可见部分。当用户滚动时,再解析新出现的部分。这大大减少了初始加载时间。就像看书一样,你不需要一次性读完所有内容,而是可以边看边翻。

虚拟化渲染
我们只渲染屏幕上可见的部分。对于不可见的部分,我们只计算布局,不实际渲染。这大大减少了GPU负担。想象一下,如果每次滚动都要重新渲染整个文档,那得多慢啊!

智能内存管理
我们使用LRU缓存来管理文档内容。最近使用的部分留在内存中,不常用的部分会被释放。当内存紧张时,我们会自动清理缓存。这就像你的大脑一样,记住最近看过的内容,忘记很久以前的内容。

这些优化让LumNote能够流畅处理超大文档。我们测试过500MB的文档,LumNote依然能够正常工作(虽然加载需要一些时间)。我们相信,好的工具应该能够处理用户的所有需求,而不是让用户去适应工具的局限。

3. Git集成:实时性与性能的平衡

Git集成是LumNote的特色功能,但说实话,这也是最让我们头疼的功能之一。我们想了很多办法,才找到一个平衡点。

挑战一:实时状态更新
我们希望用户在修改文件后,能立即在UI上看到Git状态的变化。但频繁执行git status命令会影响性能,用户体验会很差——想象一下,每敲几个字就要等几秒钟,那种感觉太糟糕了。

我们的解决方案
经过多次尝试,我们找到了一个混合方案:

  1. 使用文件系统监视器监听文件变化
  2. 文件变化后,稍微等一等(500ms)再执行git status,避免频繁打扰
  3. 缓存结果,避免重复计算
  4. 在后台线程执行,不阻塞UI

挑战二:差异对比性能
显示文件差异需要比较当前内容和Git中的内容。对于大文件,这个操作可能很慢。我们曾经遇到过这样的情况:用户打开一个100MB的文件,想要查看差异,结果等了十几秒——这显然是不可接受的。

解决方案

  1. 只比较可见部分
  2. 使用增量比较算法
  3. 缓存比较结果
  4. 提供进度提示,让用户知道正在处理

这些优化让Git集成既实时又高效。用户几乎感觉不到性能开销,但又能获得完整的Git功能。

4. 用户体验:细节决定成败

除了这些大的技术挑战,我们还遇到了很多小的用户体验问题。这些问题看似微不足道,但正是它们决定了用户是否愿意长期使用一个工具。

滚动卡顿
我们曾经发现,在滚动大文档时会有轻微的卡顿感。虽然不明显,但对于追求极致体验的我们来说,这是不能接受的。我们通过实现滚动节流和双缓冲技术来解决这个问题,现在滚动就像丝绸一样顺滑。

输入延迟
写作时最怕的就是输入延迟——你敲了键,但文字要等一会儿才出现。这种感觉会打断思路,影响创作。我们优化了输入处理管道,减少了从按键到显示的时间,确保每一次输入都即时响应。

内存泄漏
内存泄漏是很多应用的"隐形杀手"。它不会立即导致崩溃,但会让应用越来越慢。我们使用内存分析工具定期检查,确保没有内存泄漏,让LumNote能够长时间稳定运行。

这些工作可能用户看不到,但它们确实让LumNote用起来更加流畅、稳定。我们相信,好的工具应该像空气一样自然存在——你感觉不到它的存在,但它时刻为你提供支持。

结语:写作,从工具开始

LumNote不仅仅是一个编辑器,它是我们对理想写作工具的一次完整实践。从自研渲染引擎到深度Git集成,从实时预览到多格式导出,每一个功能都源于真实的写作需求。

如果你对LumNote感兴趣,关注萤火初芒回复LumNote获取地址。

我们相信开源的力量,也相信好的工具应该被更多人使用和改善。欢迎Star、Fork,或者提交Issue和Pull Request!

我们相信,好的写作工具应该让写作者专注于内容本身,而不是被工具所困扰。LumNote正是基于这样的理念设计的。

如果你也在寻找一个流畅、强大、易用的Markdown编辑器,不妨试试LumNote。它完全免费,开源透明,我们欢迎每一位用户的反馈和建议。

写作是一场孤独的旅程,但有了合适的工具,这段旅程会变得更加愉快。希望LumNote能成为你写作路上的好伙伴。


本文由Openlum智能体基于LumNote项目自动生成,分享我们对技术写作工具的理解和思考。


文章来源:https://www.cnblogs.com/luojin765/p/19866456
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云