不知道大家平时写 markdown 都是用什么软件呢?是多端同步的印象笔记?还是 vscode 内置编辑器?还是大名鼎鼎的 typora?你不会用记事本在写 markdown 吧?

不过据说微软已经把记事本集成了 markdown 功能,详情戳:https://blogs.windows.com/windows-insider/2025/05/30/text-formatting-in-notepad-begin-rolling-out-to-windows-insiders/

不过就我发布这篇文章时,编写 markdown 体验最好的,我个人感觉还是 typora 莫属。它凭借独树一帜的 WYSIWYG (hybrid) 编辑模式,在一众编辑器中遥遥领先。

可能没用过 typora 的同学对这个 WYSIWYG 有点陌生,全文是 What You See Is What You Get,中文意思是所见即所得**。**区别于通常的左右分屏的编辑方式(如印象笔记、掘金在线编辑器),typora 可以直观的显示渲染效果,摒弃了左右分屏时的注意力分散的缺点,专注于一块屏幕即可。

那么除了 typora 难道没有别的软件可以做到吗?有,像 milkdown 就是这样一款所见即所得的 markdown 渲染器,但是它只提供了 web 版本。

既然如此,up 一下

MilkUp 诞生了。

MilkUp 是一款基于 milkdown 和 electron 的桌面端软件,github 上已经发布了一个 MVP 版本,支持 windows 和 mac,它可以做到几乎和 typora 一模一样的编写体验,我这篇文章就是用 milkup 写的,感觉丝毫不输 typora。

在 MVP 版本中,可以看到已经包含了可用的基本功能,比如明暗主题切换、源码/MD 渲染模式切换、基本的打开、编辑、保存文件,以及对图片粘贴的支持。

可以看到它的界面整体保持了整洁干净,同时它还支持两种主题

你还可以在系统设置中将其设置为默认 markdown 软件,它已经对文件名建立了关联,双击即可打开。

为什么选 MilkUp ?

首先也是最重要的一点,MilkUp 是完全免费的,且承诺永久免费。虽然现在它还是一个 baby,还有很多需要改进之处,但是如果有你的支持,相信它会越来越强。

第二点,它是基于开源,且本身也开源的,代码也非常简单,是用 Vue3 开发的,里面有各位前端开发者熟悉的语法。

github 地址敬上:https://github.com/Auto-Plugin/milkup

可以看到它距离一个生产级编辑器依然有一定距离,但是正在有条不紊的开发中,如果你有好想法,或者希望亲手参与 milkup 的成长,milkup 欢迎各种 issue 和 pr。

milkup 趣事

milkup 玩梗玩的真到位,mlikup 这个名字就取的有意思,尤雨溪根据 rollup 搞了个 rolldown,它就根据 milkdown 搞了个 milkup, 连 logo 都是 milkdown 的 180° 反转。

在 milkup 中,是处处可以看到 milkdown 的影子,比如它的菜单点击下拉后,就变成了 milkdown 本身的 logo (转回来了)

它的官网也是尽量向爸爸看齐,milkdown 的是 https://milkdown.dev ,而 milkup 是 https://milkup.dev

等你到官网之后就会发现,这里也全在整活。

这是原版 milkdown 官网

这个是 milkup 整活版官网

牛奶倒流,果然 Up 了。

总结

milkup 于 2025 年 7 月 18 日发布了 MVP 版本,是一个基于 milkdown 和 electron 的桌面端 markdown 编辑器。完全开源免费,并表示会永久免费。虽然功能比较基础,可能还有 bug ,但是这不会影响它前进的步伐。

干翻 Typora!MilkUp:完全免费的桌面端 Markdown 编辑器!的更多相关文章

  1. 浅谈入行Qt桌面端开发程序员-从毕业到上岗(1):当我们说到桌面端开发时,我们在谈论什么?

    谈谈我自己 大家好,我是轩先生,是一个刚入行的Qt桌面端开发程序员.我的本科是双非一本的数学专业,22年毕业,只是部分课程与计算机之间有所交叉,其实在我毕业的时候并没有想过会成为一名程序员,也没有想过 ...

  2. arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序

    前段时间有一个项目,大体是要做一个GIS数据处理工具. 一般的方法是基于ArcObjects来进行开发,因为我对ArcObjects不太熟悉,所以就思考有没有其他简单快速的方法来做. 在查看ArcGI ...

  3. 修改远程桌面端口号.bat

    @color 0A @title 修改远程桌面端口号 by wjshan0808 @echo off echo 请输入端口号 set /p port= reg add "HKLM\SYSTE ...

  4. [资源共享]C#+AE构建GIS桌面端应用系统框架-全代码

    转自:http://www.cnblogs.com/gispeng/archive/2008/10/06/1304534.html    [资源共享]C#+AE构建GIS桌面端应用系统框架-全代码 ( ...

  5. 使用JS开发桌面端应用程序NW.js-1-Menu菜单的使用小记

    前言 本文主要内容为nw.js官方文档中没有提到,而在实际入手开发过程中才碰到的问题以及经验的汇总. 详情请查看官方文档:http://docs.nwjs.io/en/latest/Reference ...

  6. python桌面端开发手记(序列化、压缩包、加密、图形界面GUI)

    0x00   前段时间接到一个小项目是给某行业内部开发离线桌面端,业务流实现上总体分信息录入.加密导出.因为是win桌面端,所以老板说依托Access用VBA做,我据理力争了一下.之前就是用Acces ...

  7. 网站桌面端和手机端不同url的设置

    你的网站在搜索引擎中表现怎样很大程度上依赖于你的你的网站对于不同设备上的设计. 下面介绍了怎样基于URL构造来优化你的网站对于搜索引擎的支持. 决定你网页的URL构造 Determine the UR ...

  8. 重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印

    重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印 一.引言 桌面端系统经常需要对接各种硬件设备,比如扫描器.读卡器.打印机等. 这里介绍下桌面端 ...

  9. 史上最简单操作!!!!!!!Window Server2012 修改远程桌面端口号

    Window Server2012 修改远程桌面端口号   Win + R 输入 regedit 打开注册表编辑器 在注册表编辑器中找到 PortNumber 双击 PortNumber,选择10进制 ...

  10. Vue.js 桌面端自定义滚动条组件|vue美化滚动条VScroll

    基于vue.js开发的小巧PC端自定义滚动条组件VScroll. 前段时间有给大家分享一个vue桌面端弹框组件,今天再分享最近开发的一个vue pc端自定义滚动条组件. vscroll 一款基于vue ...

随机推荐

  1. Java 线程的同步与死锁

    目录 1.线程的同步产生的原因 2.线程的同步处理操作 3.线程的死锁情况 排查死锁的方式: 请解释多个线程访问统一资源时需要考虑哪些情况?有可能带来哪些后果? 概念:Java同步和异步,阻塞和非阻塞 ...

  2. ISO镜像做yum源

    先上传一个镜像文件 centos-7-x86-1708.iso 挂载 mount -o loop /root/centos-7-x86-1708.iso /file 设置开机自动挂载 vi /etc/ ...

  3. 一行Code - 搭建HTTP服务器, 文件 多设备共享

    我的痛点是这样的. 我想实现 文件 (代码文件, PPT PDF, WORD, 视频...) 等各种文件, 在 windows 电脑, android 手机, iPad, 及 mac 电脑或者, 或更 ...

  4. 端到端自动驾驶系统实战指南:从Comma.ai架构到PyTorch部署

    引言:端到端自动驾驶的技术革命 在自动驾驶技术演进历程中,端到端(End-to-End)架构正引领新一轮技术革命.不同于传统分模块处理感知.规划.控制的方案,端到端系统通过深度神经网络直接建立传感器原 ...

  5. Python内置库itertools简单学习

    该库为满足特定需要的比较高效的迭代器内置库,在数据科学中的应用也不少,故有必要了解一下: import itertools import sys 无限迭代器(Infinite iterators) I ...

  6. Windows下使用Qt复制文件夹(xcopy,非QFile)

    Windows下使用Qt复制文件夹(xcopy,非QFile) .h文件 #ifndef CXCOPY_H #define CXCOPY_H #include <QWidget> #inc ...

  7. Java 把列表元素拼接字符串

    摘要:使用 Java Collectors.joining等方法把List中的所有元素通过指定的分隔符拼接为字符串. 目录 综述 使用For循环 StringUtils.join 函数 Collect ...

  8. 几种简单的springboot启动后启动一条死循环线程方式

    前言 之前有测试 # 启动类加 @EnableAsync # 方法上加注解 @Async @PostConstruct 但是依旧会卡主主线程,所有另辟蹊径 第一种 在启动类上加注解 @EnableAs ...

  9. java等比压缩图片工具类

    工具类 package com.chinaums.abp.util; import javax.imageio.ImageIO; import java.awt.*; import java.awt. ...

  10. 【2020.11.25提高组模拟】小 T 与灵石(stone) 题解

    [2020.11.25提高组模拟]小 T 与灵石(stone) 题解 题意简述 给一棵根为\(1\)的树.一共\(q\)次操作,每次选\(k_i\)个节点\(p_1,p_2,\dots,p_{k_i} ...