所见即所得的markdown编辑器
Markdown软件对比
软件 | Typora | MarkText | vscode插件Office Viewer(Markdown Editor) |
浏览器端markdown编辑器vditor |
Obsidian |
---|---|---|---|---|---|
所见即所得 | 支持 | 支持 | 支持 | 支持 | 支持 |
左代码右预览 | 不支持 | 不支持 | 支持 | 支持 | 支持 |
第三方插件 | 支持(插件管理器的下载安装链接,但插件管理器bug多,社区不成熟) | 计划在 v1.0.0 发布之后添加插件机制,以及自定义主题 | 需要与其他vscode插件兼容 | 不支持 | 是 |
官方下载链接 | https://typora.io | https://www.marktext.cc | https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-office | 在线工具: https://vditor.vercel.app ;支持本地部署,需要安装node | https://obsidian.md/ |
操作系统 | Mac、windows、Linux | Mac、windows、Linux | Mac、windows、Linux | 所有操作系统 | Mac、windows、Linux、iOS、安卓 |
开源否 | 2021年底前在beta版本期间开源、免费于https://github.com/typora;之后闭源、付费 | 开源 https://github.com/marktext/marktext | 开源 https://github.com/cweijan/vscode-office | 开源 https://github.com/Vanessa219/vditor | 闭源 |
收费否 | 过往版本(<=0.11.18版本)免费,之后版本付费,或去MacTorrents下载破解版 | 免费 | 免费 | 下同Office Viewer(Markdown Editor) ,因为其内核是vditor |
个人免费,商用组织收费 |
表格 | 支持 | 支持 | 支持 | 支持 | |
图 | 支持 | 支持 | 支持 | 支持 | |
公式 | 支持 | 支持 | 支持 | 支持 | |
内嵌html | 支持 | 支持 | 支持 | 支持 | |
中文界面 | 支持 | 原版不支持。请往汉化版官网,但这个版本无法在打开文件夹时向当中的markdown文件内插图。 | 不支持 | 支持,但界面汉化不充分 | |
流畅度 | 图/公式/字数多时卡顿 | 图/公式/字数多时流畅 | 图/公式/字数多时流畅 | ||
用 \tag{} 手动编号 |
支持 | 支持 | 支持 | 支持 | |
公式块中align或equation环境自动编号 | 支持 | 支持 | 支持 | 不支持(除非安装下述插件,但不能设置只给equation和align环境自动编号) | |
公式块全部自动编号 | 支持,可在Typora设置里勾选 | 不支持 | 不支持 | 支持(但需要安装插件MathLinks 和LaTeX-like Theorem & Equation Referencer (Mathlinks 是其依赖项),可以设置仅被引用的公式会自动编号、或任何公式都自动编号) |
|
公式中使用\label \eqref \ref |
支持 | 不支持,整个公式块无法渲染 并报错 | 不支持,整个公式块能渲染,但这几条命令处渲染错误并报错 | 不支持。偶尔能渲染正确,但一编辑公式,公式渲染和引用渲染就报错,参见。安装MathLinks 和LaTeX-like Theorem & Equation Referencer 后,敲\eqref 后就会弹出下拉菜单,可以选择需要引用的公式,但是使用的是markdown方言:在公式下方添加^公式hash ,用[[#^公式hash]] 引用公式。 |
|
公式是否支持诸如\dd 这类的命令 |
支持 | 不支持。且无法像Obsidian那样自定义公式命令 | 不支持。且无法像Obsidian那样自定义公式命令。但可以安装插件*Markdown+Math ,在vscode的配置文件中,加入诸如下面的配置:"mdmath.macros": { "\\dd": "\\mathrm{d}", "\\tr": "\\mathrm{tr}"} ,这样就能支持。 |
不支持。Obsidian使用的公式引擎MathJax默认不支持这些命令。需要安装插件Extended MathJax ,并在仓库根目录自行创建 preamble.sty 文件,然后用文本编辑器向其中写入需要加载的latex包,和自定义命令(诸如\require{包的名字} \newcommand{\dd}{\operatorname{d}} ),然后重启Obsidian。 |
|
在文件夹内显示*.textbundle |
不支持 | 支持 | 支持 | 支持 | |
直接打开*.textbundle |
支持(打开方式见下文说明) | 支持(打开方式同Typora) | 支持(无需额外设置) | 支持,但必须在仓库内的才能打开。详见TextBundle support | |
通过拖拽/⌘+V 向*.textbundle/assets 插入图片 |
支持(需要配置插图自动复制到./assets ) |
支持不充分: 1. 原版:当设置插图路径为 assets 时:若打开一markdown文件,则把插图复制到此文件所在目录下的assets 子文件夹内;但若打开一文件夹,则复制插图到文件夹根目录下的assets 子文件夹内。详见 官方说明。2.汉化版:不管如何设置插图路径,在打开文件夹时,都无法向当中的markdown文件内插图 |
支持(需要配置插图自动复制到./assets ,即向vscode的用户配置文件添加:"vscode-office.pasterImgPath": "${workspaceDir}/assets/${now}.png", "vscode-office.workspacePathAsImageBasePath": true, ) |
支持,但需要对每一个仓库都修改Preference 如下文件与链接: * 内部链接类型:基于当前笔记的相对路径 * 使用wiki链接:关闭 * 附件默认存放路径:当前文件所在文件夹下指定的子文件夹 * 子文件夹名称: assets |
|
在文件夹内搜索文本 | 支持 | 支持 | 支持 | ||
打开.markdown .txt 文件 |
支持 | 支持 | 支持 | 支持(默认只能打开md 文件;需要安装插件Custom File Extensions , 并设置{ "markdown": [ "", "md", "markdown", "txt", 等 ] } 表示这些后缀的文件都用markdown格式打开) |
|
打开任何位置的文件 | 支持 | 支持 | 支持 | 不支持(除非安装脚本) | |
sequence制图 | 支持 | 汉化版支持 | 不支持 | 不支持 | |
flow制图 | 支持 | 汉化版不支持 | 不支持 | 不支持 | |
mermaid制图 | 支持(但我的电脑上有bug,Typora 1.8.4,MacOS 10.15.7,会显示Painting Diagram ... ) |
汉化版支持 | 支持 | 支持 |
说明:
-
*.textbundle
的打开方式方式:-
Typora和MarkText打开
*.textbundle
的方式:-
在Typora和MarkText内,点
文件
-打开
(不论是以文件还是文件夹),无法打开*.textbundle
-
在
Finder
-单击右键-打开方式
-其它
-选择用Typora或MarkText打开,可以打开。 -
在
Finder
-单击右键-显示简介
-打开方式
-设置用Typora或MarkText打开,然后双击*.textbundle
,可以打开。 -
在终端,
open -a Typora或Marktext xxxx.textbundle
,可以打开。
-
-
在vscode(使用插件
Office Viewer(Markdown Editor)
)中,上述方法都能打开*.textbundle
。
-
-
vscode插件
Office Viewer(Markdown Editor)
插件的内核和前身:-
vscode插件
Markdown Editor
https://marketplace.visualstudio.com/items?itemName=zaaack.markdown-editor 在2021年后就不再更新发布了。不推荐使用。 -
vscode插件
Office Viewer(Markdown Editor)
集成了Markdown Editor
的功能,并且还支持office文档(ppt、word、excel)的预览。更新发布至今(2023年底)。推荐使用。 -
Markdown Editor
和Office Viewer(Markdown Editor)
的内核都是 浏览器端markdown编辑器vditor
。
-
关于Obsidian的说明
-
Obsidian的Preference(
⌘+,
)都是对仓库而言的,每个仓库的Preference相互独立,每开一个新仓库都要从头设置. -
MathJax支持的包:详见。现在(2024年7月)已经默认支持
mhchem
了,因而Obsidian的公式也支持使用mhchem
包了。 -
在Obsidian中,对单个md文件加载latex包/自定义公式命令的方法:在md文件开头,写形如下面的内容,就能让后面的公式使用这些包/命令。详见
$\require{需要加载的包}$ $\newcommand{\dd}{\operatorname{d}}$
我的配置思路
-
日常笔记需要手机上写,同步到电脑的,可以开一个仓库,用onedrive+remotely save实现同步,不安装支持公式和textbundle的脚本,笔记都用md文件,在本目录/assets/下保存图像
-
只在电脑上写的技术笔记,再开另一个仓库,安装支持公式和textbundle的脚本。
obsidian如何同步笔记
- 每次 iPhone 打开 Obsidian 都需要同步 iCloud,当 vault 较大时,时间会很久。这个说法来自。
我亲自试过在iphone上,把obsidian的仓库设置在iCloud中,每次开启手机上的Obsidian都需要等十多秒,让iCloud把仓库配置文件(在./obsidian里)重新下载下来。Obsidian官方说,这是因为iCloud会自动从本地删除./obsidian(我猜可能是因为它是隐藏文件才被删掉),而iCloud不提供阻止删除本地文件的设置,所以建议用其他云盘搞同步。现在我用了onedrive同步仓库,iphone上能够秒开Obsidian。
-
obsidian官方的同步太贵,一个月:10美元(月付)/8美元(年付)。使用方法参见。
-
第三方云盘全平台同步方案 :Remotely save,参见
支持的云盘:
- Amazon S3 or S3-compatible (Cloudflare R2 / BackBlaze B2 / MinIO / …)
- Dropbox
- OneDrive for personal (App Folder)
- OneDrive for personal (Full) (PRO feature)
- Webdav (NextCloud / InfiniCloud / Synology webdav server / seafile(好像是支持清华云盘的,等结束休学后试试)…)
- Webdis
- Google Drive (GDrive) (PRO feature)
- Box (PRO feature)
- pCloud (PRO feature)
- Yandex Disk (PRO feature)
- Koofr (PRO feature)
- Azure Blob Storage (PRO feature)
- Here shows more connectable (or not-connectable) services in details.
教程:Remotely save(同步插件)是本周讨论最火的插件,教程中已经收录了许多内容:
- Obsidian 同步 Remotely Save S3 配置指南 by 恐咖兵糖
- 第三方同步插件(Remotely save介绍) by 软通达:Dropbox
- Obsidian Remotely Save 插件实现电脑和移动端同步 by yaozhuwa:onedrive方式
- 最舒服的Obsidian第三方多端同步 by 维客笔记:Dropbox
- remotely插件搭配腾讯云cos教程 by 八宝周:腾讯云,S3
- Obsidian通过Remotely save插件实现坚果云同步 by BCS:坚果云,webdav
- Obsidian使用Remotely Save 和阿里云 OSS 实现多平台同步 by zm:阿里云oss,S3
推荐使用阿里云或腾讯云的s3服务。
我采用的解法:Remotely Save+OneDrive
参考:配置方法
Remotely Save插件可以访问OneDrive等云盘的api,无需安装OneDrive.app并将obsidian库直接放同步盘内,就实现库和OneDrive的同步。
方法一,电脑 OneDrive同步盘 + 手机 Remotely Save**(推荐)**,不同步配置:
-
mac:安装OneDrive.app,obsidian库直接放在OneDrive在Mac的同步盘内,不安装Remotely Save(或安装了但不启用)。
-
iphone:不安装OneDrive.app,因为iphone上的obsidian库只能放在
iCloud/Obsidian
和我的iphone/Obsidian
,不能放在OneDrive在iphone上的同步盘内,安装Remotely Save,并关闭同步配置文件夹
(否则会把Remotely Save插件、Remotely Save需要同步到OneDrive的配置 给同步到mac上的OneDrive同步盘内,这样mac上使用obsidian时,就会同时通过Remotely Save和OneDrive.app两个软件同时去同步,造成额外的计算开销和能耗,且可能造成冲突)。
法二,所有设备都安装Remotely Save,可以开同步配置,也可以关同步配置:
- 如果所有设备的库没有放在OneDrive同步盘内,则需要所有设备都安装Remotely Save,可以设置开启/关闭
同步配置文件夹
。 - 并不推荐直接同步配置文件,因为可能带来一些Obsidian设置的冲突。开启同步配置文件前,请做好备份。(来源)
自动下载图片
然后现在我还有一个技术问题解决不了:没法在iphone从Safari自动下载图像到obsidian的笔记:
- 如果是从浏览器把选中的图文,复制黏贴到obsidian里,图片的链接是
![xxx](https://图像的url)
,而不会自动下载到仓库里的assets/文件夹;需要等同步到电脑上,再用Local Image Plus插件来下载,这个插件不支持iOS。如果不及时下载图像,可能帖子被删,图像丢失。 - 如果是把选中图文从浏览器/ios的备忘录,拖拽到obsidian里,就会转换成
![xxx](blob:capacitor://localhost/图像名称.扩展名)
,能正常渲染图像,但重启obsidian后,就无法渲染图像里,这个本地连接找不到了。
- 法一:Obsidian安装Local Image Plus插件,但这个插件支持mac,不支持iOS,不晓得是否支持安卓
- 法二:浏览器安装插件:https://github.com/deathau/markdownload,Firefox, Google Chrome, Microsoft Edge and Safari.都可用,但这个插件不支持iOS上的Safari,不晓得是否支持安卓上的Chrome浏览器
剪藏
法一:
【Obsidian全文剪藏—利用ios快捷指令实现全文剪藏】 https://www.bilibili.com/video/BV1vT4y1U7Rv/
法二:
- 试了这个方法,在safari中对知乎帖子用
Ob全文剪藏
的快捷指令,会报错,在下载知乎网页时无法运行。不论知乎网页是允许转载还是禁止转载,都会这样。 - 试了这个方法,微信帖子能
全文剪藏
,但笔记里是![xxx](https://图像的url)
形式,不会自动下载图像到仓库。
法三:简悦:有obsidian配置懒人包
- github:https://github.com/Kenshin/simpread
- 官网:http://ksria.com/simpread/
- 文档:http://ksria.com/simpread/docs/
- 简阅选择离线模式,会把图片下载下来,以base64格式保存,不太直观。详见:https://github.com/Kenshin/simpread/discussions/2221
加密
obsidian加密工具比较
插件名称 | 本地是否保存密码 | 加密对象 | 不加密的对象 | 加密算法 | 介绍 | 支持的OS | 缺点 |
---|---|---|---|---|---|---|---|
Remotely Save | 是,密码以明文保存在本地配置中 | 在云上保存的整个仓库 | 本地的整个仓库 | RClone Cryppt/OpenSSL enc | 本地仓库内的文件以明文保存,云端的文件以密文保存,本地和云之间用密文通信。可以实现多台本地设备上仓库的同步,且网络流量、云文件都是加密的。 | mac, iOS | 仓库内文件多时同步很慢。因为每次同步时,需要将本地和云上的所有文件的元数据(如时间戳)做对比,然后开始同步。详见。 改进思路:若一个文件夹在本地和云上的元数一致,则说明整个文件夹及其内文件都不需要同步。 |
Encryption | 仓库内的选中的文件夹 | 仓库内其他文件夹,包括 | https://wenku.csdn.net/answer/28d21b0a2bd54327a0148f80f3272d52 | mac, iOS | |||
Cryptsidian | 整个仓库内所有文件,包括md和图像 | 文件名、文件夹名 | mac, |
1. 解码错误不报错,会直接充写文件,造成不可逆损坏 2. 加密后不能打开文件并保存,不然无法解密 3. 每次解密后重新加密需要重新输入密码 4. 解密需要两次输入密码核对一致 | |||
Meld Encrypt | 超时前会记住密码 | 单个md文件、md内选中文本 | 仓库内其他文件,包括所有图像 | AES256 | https://github.com/meld-cp/obsidian-encrypt | mac, iOS | 1. 无法对整个文件夹加密,详见 2. 无法对笔记中的图像加密,3. 解密的md文件,无法进入编辑模式,只能进入预览模式(无法显示图像)、源码模式,只有将md文件解除加密才能解决这个问题,但之后要重新加密,4. 无法设置整个仓库用同一个密码,每次加密md笔记都要第二次输入密码(好在第一次输入的密码默认用上次用过的密码) |
插件名称 | 本地是否保存密码 | 加密对象 | 不加密 | 加密算法 | 介绍 | 缺点 |
---|---|---|---|---|---|---|
Cryptomator | 整个仓库,选中的文件夹。加密后文件与解密文件一一对应,但文件名及文件夹结构也是加密的。 | 在iOS上无法把仓库选在Cryptomator加密的文件夹内 详见 | ||||
veracrypt | 开源免费加密工具,安全性高,但同步不很方面。加密后文件为一个单文件,解密为一个虚拟盘符。 | |||||
比较Cryptsidian, Cryptsidian,Cryptomator,veracrypt
本地使用推荐veracrypt、cryptomator,结合网盘使用推荐cryptomator。
Typora卡顿
解决Typora字数过多造成卡顿现象 https://blog.csdn.net/qq_46921028/article/details/131896316
win10上Typora卡顿的问题及其解决方案 https://blog.csdn.net/Mao_Jonah/article/details/120533879
解决KaTex不支持\label
\eqref
\ref
-
KaTex不打算官方支持
\label
\eqref
\ref
-
可以自行修改KaTex配置
本地html
参照 #2033 (comment)的思路 和 样例配置,有如下demo代码。新建文件demo.html
,将下面代码复制进去,然后用浏览器打开,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title>KaTeX-DOM Eq. Ref Test</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js" integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/auto-render.min.js" integrity="sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa" crossorigin="anonymous"
onload="renderMathInElement(document.body);"></script>
<script src="main.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
// auto-render specific keys
delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false},
{left: '\\(', right: '\\)', display: false},
{left: '\\[', right: '\\]', display: true}
],
// render equation with bug
throwOnError : false,
// support eqref
trust: (context) => ['\\htmlId', '\\href'].includes(context.command),
macros: {
"\\eqref": "\\href{###1}{(\\text{#1})}",
"\\ref": "\\href{###1}{\\text{#1}}",
"\\label": "\\htmlId{#1}{}"
}
});
});
</script>
</head>
<body>
In Eq. $\eqref{eq:1}$ or $\ref{eq:1}$.<br/>
$$
\begin{aligned}
\sin 2\theta = 2\sin \theta \cos \theta \\ = \cfrac{2 \tan \theta}{1+\tan^2 \theta}
\end{aligned}
\label{eq:1} \tag{1}
$$
</body>
</html>
渲染结果如下:
但本法有个缺点: $\ref{eq:1}$
$\eqref{eq:1}$
渲染为’eq:1’而非 ‘1’(即公式编号)。不知是否有方法修补此bug?或是否有其他支持\label \ref \eqref的方法可避免此bug?
vscode插件Markdown+Math
安装vscode插件: Markdown+Math
Reference: KaTeX/KaTeX#2003 (comment)
在vscode的配置文件中加入如下配置,则vscode的自带markdown分栏预览就能支持\label
\eqref
\ref
,效果见下图
"mdmath.katexoptions": {
"trust": "(context) => ['\\htmlId', '\\href'].includes(context.command)"
},
"mdmath.macros": {
"\\eqref": "\\href{###1}{(\\text{#1})}",
"\\ref": "\\href{###1}{\\text{#1}}",
"\\label": "\\htmlId{#1}{}"
},
相关讨论:
-
KaTex issue: Support \eqref and \label https://github.com/KaTeX/KaTeX/issues/2003
-
Referencing formula numbers in articles https://github.com/falgon/roki-web/issues/34
-
vscode-markdown公式引用:https://github.com/yzhang-gh/vscode-markdown/issues/985
-
https://github.com/yzhang-gh/vscode-markdown/issues/985#issuecomment-1108580333
由于这是非官方的做法,不太可能加入到正式支持之中,但是你可以自行修改插件的本地文件在
$HOME/.vscode/extensions/yzhang.markdown-all-in-one-3.4.x/dist/extension.js
中搜索l={throwOnError:!1}
并替换为l={throwOnError:!1, trust: true}
我的github评论: