Typora 插件
目录
[toc]
版权
此项目版权归属如下作者,具体信息请访问原作者仓库,这里只做文档记录,感谢大佬开源的 typora 插件。
https://github.com/obgnail/typora_plugin
环境
个人当前测试环境:
win10
typora正式版 v1.9.5
typora_plugin 1.10.28
源码位置:(具体代码请访问作者原仓库,这里只做备份)
2024.9.10-typora软件和插件
插件特色
自带标号
后来发现这个自动加标号功能,还是很好用的哦!!!
具有上校小箭头功能
具有图片查看功能
支持同一个窗口打开多标签页功能
优化高亮搜索功能
功能汇总
序号 | 插件 | 功能 | 默认启用 |
---|---|---|---|
1 | window_tab | 标签页管理 | |
2 | search_multi | 全局多关键字搜索 | |
3 | multi_highlighter | 多关键字高亮 | |
4 | collapse_paragraph | 章节折叠 | |
5 | collapse_list | 列表折叠 | × |
6 | collapse_table | 表格折叠 | × |
7 | md_padding | 中英文混排优化 | |
8 | slash_commands | 斜杠命令 | |
9 | templater | 文件模板 | |
10 | resourceOperation | 一键清除无用图片 | |
11 | fence_enhance | 一键复制、折叠、格式化代码 | |
12 | toc | 在右侧生成大纲目录 | |
13 | commander | 命令行环境 | |
14 | mindmap | 根据文档大纲一键生成思维导图 | |
15 | toolbar | 多功能搜索 | |
16 | right_click_menu | 右键菜单统一管理、调用插件 | |
17 | pie_menu | 圆盘菜单 | × |
18 | preferences | 启停插件 | |
19 | markmap | 提供 markmap 组件支持 | |
20 | echarts | 提供 echarts 组件支持 | |
21 | chart | 提供 chartjs 组件支持 | |
22 | abc | 提供 abcjs 组件支持 | |
23 | calendar | 提供 tui.calendar 组件支持 | |
24 | wavedrom | 提供 wavedrom 组件支持 | |
25 | marp | 提供 marp 组件支持 | |
26 | callouts | 提供 callouts 支持 | |
27 | text_stylize | 文字风格化 | |
28 | read_only | 只读模式 | |
29 | blur | 模糊模式 | |
30 | kanban | 看板 | |
31 | timeline | 时间线 | |
32 | chat | 聊天 | |
33 | file_counter | 显示目录下的文件数 | |
34 | outline | 以表格、图片、代码块形式的大纲 | |
35 | auto_number | 章节、表格、图片、代码块等自动编号 | |
36 | imageReviewer | 图片查看器 | |
37 | chineseSymbolAutoPairer | 中文符号自动补全 | |
38 | datatables | 表格增强(搜索、过滤、分页、排序等) | × |
39 | resize_table | 调整表格行高列宽 | |
40 | resize_image | 调整图片显示大小 | |
41 | export_enhance | 导出 html 时避免图片丢失 | |
42 | go_top | 一键到文章顶部、底部 | |
43 | reopenClosedFiles | 打开上次退出 Typora 时尚未关闭的标签页 | × |
44 | truncate_text | 暂时隐藏内容,提高大文件渲染性能 | × |
45 | markdownLint | markdown 格式规范检测 | |
46 | darkMode | 夜间模式 | |
47 | noImageMode | 无图模式 | |
48 | pluginUpdater | 一键升级插件 | |
49 | extractRangeToNewFile | 提取选区文字到新文件 | |
50 | fullPathCopy | 复制标题路径 | |
51 | autoTrailingWhiteSpace | 为文档添加结尾空格 | × |
52 | redirectLocalRootUrl | 重定向本地资源根目录 | × |
53 | blockSideBySide | 并列显示活动块 | × |
54 | scrollBookmarker | 书签管 理器 | |
55 | openInTotalCommander | 在 total commander 打开 | × |
56 | bingSpeech | 必应朗读 | × |
57 | cipher | 加密文件 | |
58 | ripgrep | 使用 ripgrep 搜索文件 | × |
59 | article_uploader | 一键上传博客到支持的所有平台 | × |
60 | help | 用户帮助 | |
61 | custom | 开放平台,用户自定义插件(高级) | |
62 | hotkeyHub | 快捷键注册中心(高级) | |
63 | quickButton | 于右下角添加功能按钮(高级) | |
64 | json_rpc | 外部操纵 Typora(高级) | × |
65 | old_window_tab | 标签页管理(已废弃) | × |
尊重用户的一切选择。本项目的任何插件、任何功能皆可永久启用 / 禁用。
如果各位有其他的需求,或发现 BUG,欢迎 提 issue,欢迎 PR。如果能给我颗 star ⭐ 就更好了 :)
使用方法
方法一(自动)
此方法支持 Windows、Linux 平台。
-
下载 插件源码的压缩包,并将其解压
-
进入 Typora 安装路径,找到包含
window.html
的文件夹 A(正式版为Typora/resources/window.html
,免费版为Typora/resources/app/window.html
) -
将解压后的 plugin 文件夹粘贴进文件夹 A 下(参考方法二的图片)
-
进入文件夹
A/plugin/bin/
-
如果你是 Windows 系统,双击运行
install_windows_amd_x64.exe
,如果看到下图,说明安装成功 -
如果你是 Linux 系统,以管理员运行
install_linux.sh
,如果看到下图,说明安装成功
-
-
验证:重启 Typora,在正文区域点击鼠标右键,弹出右键菜单栏,如果能看到
常用插件
栏目,说明一切顺利
Windows | Linux | |
---|---|---|
步骤 4 |
附加说明:
- 除了
install_windows_amd_x64.exe
,您也可以通过执行同目录下的install_windows.ps1
安装插件。 - 每个插件皆有配置选项。开发者鼓励您修改配置,以符合自身需求。配置文件夹位于 A/plugin/global/settings/
方法二(手动)
此方法支持 Windows、Linux 平台。
-
下载 插件源码的压缩包,并将其解压
-
进入 Typora 安装路径,找到包含
window.html
的文件夹 A(正式版的路径为Typora/resources/window.html
,免费版的路径为Typora/resources/app/window.html
) -
将解压后的 plugin 文件夹粘贴进文件夹 A 下
-
根据文件夹 A 下是否含有
appsrc
目录判断 Typora 是否为新版本,有则新版本,无则旧版本 -
打开文件
A/window.html
-
若是新版本:搜索文件内容
<script src="./appsrc/window/frame.js" defer="defer"></script>
-
若是旧版本:搜索文件内容
<script src="./app/window/frame.js" defer="defer"></script>
在上述搜索内容的 后面 加入
<script src="./plugin/index.js" defer="defer"></script>
-
-
验证:重启 Typora,在正文区域点击鼠标右键,弹出右键菜单栏,如果能看到
常用插件
栏目,说明一切顺利
如果您安装失败,大概率是权限问题导致的。请给上述的 plugin 文件夹授权。
新版本 | 旧版本 | |
---|---|---|
步骤 3 | ||
步骤 5 |
方法三(自动)
目前此方法仅限 archlinux 平台,aur 见 aur/typora-plugin
yay -S typora-plugin
实现原理
前端
window.html
是 Typora 的初始文件,可以写入一个 <script>
标签实现功能,就和 Tampermonkey 脚本一样。
后端
- 因为 Typora 暴露了
reqnode
函数(require 的别名),所以可以使用 CommonJS 的reqnode('path')
导入 Node.js 的 path 库,其他库同理。 - 因为 Typora 使用了 electron 不太安全的
executeJavaScript
功能,所以可以用此注入 JS 代码,从而劫持后端关键对象,进而实现 electron 的后端功能注入。理论上劫持了 electron 对象,你甚至可以在 Typora 里斗地主。
// 控制台输入下面命令:
// 让第二个窗口打印消息
JSBridge.invoke("executeJavaScript", 2, `console.log("i am logging")`);
// 让所有窗口打印消息
ClientCommand.execForAll(`console.log("i am logging")`);
// 获取到本窗口的 BrowserWindow 对象
global.reqnode('electron').remote.require('electron').BrowserWindow;
// 获取到所有窗口的 BrowserWindow 对象
ClientCommand.execForAll(`console.log(global.reqnode('electron').remote.require('electron').BrowserWindow)`);
// 让窗口 1 执行语句_myValue = 123,然后将变量_myValue 传给窗口 2
JSBridge.invoke('executeJavaScript', 1, "_myValue=123; JSBridge.invoke('executeJavaScript', 2, `console.log(${_myValue})`)");
Q&A
我的 Typora 版本能用吗?
所有插件都在 0.9.98 版本(最后一个免费版本)和最新版本测试过。本项目理论上支持所有 Typora 版本,但是 Typora 在 0.9.98 版本以后功能才稳定下来。0.9.98 版本以下,可能会因为缺少某些功能导致部分插件失效。
插件会失效吗?
理论上能保持长时间有效,且我在维护中。
如何永久禁用/启用某些插件?
右键菜单 -> 少用插件 -> 启停插件。
如何修改插件配置?
目前整个项目包含 600+ 配置选项,可以比较完整的定义各个插件的行为。
这些配置全部位于 ./plugin/global/settings/ 目录中。修改配置的方法请阅读该目录下的 请读我.md。
如何升级插件?
右键菜单 -> 常用插件 -> 二级插件 -> 升级插件。
我不想用了,如何卸载插件系统?
右键菜单 -> 少用插件 -> 帮助 -> 卸载插件。
支持 Typora for Mac 吗?
没有 Mac,故没做测试。
插件使用
所有的插件都提供了四种使用方法:
- 键盘党:
- 键入 ctrl+j,在输入框键入
plu+空格+插件名称
调出插件列表(详见toolbar
插件) - 快捷键(详见
hotkeyHub
插件)
- 键入 ctrl+j,在输入框键入
- 鼠标党:
- 在正文区域右键,在弹出的右键菜单中直接调用(详见
right_click_menu
插件) - 快捷按钮(详见
quickButton
插件)
- 在正文区域右键,在弹出的右键菜单中直接调用(详见
callouts: 提供 callouts 支持
使用方式:右键菜单 -> 常用插件 -> 二级插件 -> Callouts
数量、类型、颜色、icon 皆可自己定义,请前往配置文件修改:
[[callouts.config.list]]
type = "note"
background_color = "#e1d1eb"
left_line_color = "#6a1b9a"
icon = "\\f040"