终极版本的Typora上传到博客园和csdn

激活插件

下载网址是这个:

https://codeload.github.com/obgnail/typora_plugin/zip/refs/tags/1.9.4

解压之后这样的:

image-20240619181438204

解压之后将plugin,复制到自己的安装目录下的resources

image-20240619181337244

点击安装即可:

image-20240619181538228

更改配置文件

image-20240619181134062

"dependencies": {
	    "chromedriver": "^125.0.2",
	    "marked": "^12.0.2",
	    "selenium-webdriver": "^4.21.0"
	}

安装自己的浏览器chrome,看自己的安装版本

链接:https://pan.baidu.com/s/1-JXLXd5HMlCACj8kpnUjlQ?pwd=xa0d
提取码:xa0d

可以参照这样

然后在自己的文件夹下面复制一个参数版本

image-20240619182141298

copy里面的内容是这样的

image-20240619182211061

在这个路径下面npm i 一下

image-20240619182307981

然后再将自己复制的依赖复制到新的node_module下面就好了

然后再将我给你的

image-20240619182438801

替换进去就好了

参数配置

参考

image-20240619182600407

打开之后改成这个样子:

#  如果您对 toml 格式不太了解,可以花三分钟时间学习一下:https://toml.io/cn/v1.0.0
#  插件使用说明:https://github.com/obgnail/typora_plugin
#  所有插件都允许单独开启/关闭,开发者鼓励您修改配置,以符合自身需求
#-------------------------------------------------------------------------
#  请勿修改【custom_plugin.default.toml】文件,请阅读本目录下的【请读我.md】文件
#  请勿修改【custom_plugin.default.toml】文件,请阅读本目录下的【请读我.md】文件
#  请勿修改【custom_plugin.default.toml】文件,请阅读本目录下的【请读我.md】文件
#-------------------------------------------------------------------------


############### kanban ###############
[kanban]
# 右键菜单中展示的名称
name = "Kanban"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[kanban.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "kanban"
# 严格模式:不会忽略存在语法错误的代码行,直接在页面上报错(此选项用于控制所有看板,如果设置为true,那么会强制所有看板进入严格模式)
# 也可以在代码块首行添加use strict,进入严格模式(此操作用于控制单个看板)
STRICT_MODE = false
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 当描述为空时隐藏描述框
HIDE_DESC_WHEN_EMPTY = true
# 看板最大高度(单位:px)(若<0,则全部显示)
KANBAN_MAX_HEIGHT = 700
# 看板的宽度(单位:px)
KANBAN_WIDTH = 250
# 看板任务描述框的最大高度(单位:em)(若<0,则全部显示)
KANBAN_TASK_DESC_MAX_HEIGHT = -1
# 当看板数量太多时是否换行显示
WRAP = false
# 当鼠标位于看板时,ctrl+wheel滚动看板
CTRL_WHEEL_TO_SCROLL = true
# 允许在描述框使用markdown内联样式(code、strong、em、del、link、img)
ALLOW_MARKDOWN_INLINE_STYLE = true
# 看板框的颜色(请保持 KANBAN_COLOR 和 TASK_COLOR 数量一致,否则颜色会乱套,就不好看了)
KANBAN_COLOR = ["#FFE0B2", "#DAE9F4", "#FEDCCC", "#C6E5D9", "#FFF1B9"]
# 任务框的颜色
TASK_COLOR = ["#FFFDE7", "#F8FAFF", "#FFFFF2", "#FFFCF0", "#FFFFF5"]
# 自动插入的模板
TEMPLATE = """```kanban
use strict
# Today's task

## Todo
* 语法说明(一级标题表示看板标题\\n二级标题表示看板\\n- 或 * 表示任务)
- 描述框样式(支持在描述框添加 markdown 行内样式:\\n**加粗**,*斜体*,`代码`,~~删除~~,[链接](https://github.com/obgnail/typora_plugin),![图片](https://avatars.githubusercontent.com/u/48992887?s=96&v=4))
- 严格模式(在首行添加 use strict 进入严格模式,将不会忽略语法错误)
- 当描述为空时隐藏描述框

## In-Progress
- 数量、配色(看板和任务都可以无限添加\\n\\n可以前往配置修改你喜欢的颜色)
- 当任务数量太多,出现滚动条时(可以将鼠标置于看板下,使用【鼠标滚轮】滚动任务)
- 当看板数量太多,出现滚动条时(可以将鼠标置于看板下,使用【ctrl+鼠标滚轮】滚动看板)

## Completed
- NOTE(语法是插件开发者定义的,无法通用,只建议【每日任务】临时使用)
```
"""


############### chat ###############
[chat]
# 右键菜单中展示的名称
name = "Chat"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[chat.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "chat"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 默认的选项
DEFAULT_OPIONS = { useStrict = true, showNickname = true, showAvatar = true, notAllowShowTime = false, allowMarkdown = true, senderNickname = "me", timeNickname = "time" }
# 自动插入的模板
TEMPLATE = """```chat
---
# 配置
# 进入严格模式(不忽略语法错误)
useStrict: false
# 展示用户名
showNickname: true
# 展示头像
showAvatar: true
# 不允许展示时间
notAllowShowTime: false
# 允许使用markdown语法
allowMarkdown: true
# 右侧发送者的用户名
senderNickname: me
# 时间的用户名
timeNickname: time
# 用户头像
avatars:
  me: https://avatars.githubusercontent.com/u/48992887?s=96&v=4
  nickname1: ./assets/1.jpg
---

time: 昨天 18:21

testUser1: 使用冒号分割用户名和消息

me: 右侧的用户名为 me,时间为 time。

me: 支持部分 markdown 语法。比如 **加粗**,*斜体*,`代码`,~~删除~~,[链接](https://github.com/obgnail/typora_plugin),\\n![图片](https://avatars.githubusercontent.com/u/48992887?s=96&v=4)

nickname1: 支持使用 yaml 格式的 front matter 修改配置(就和 markdown 一样)\\n\\n其中的 avatars 选项用于配置用户的头像,如果没有配置头像,默认为用户名的首字符\\n\\n你可以试试在本文件所属目录下添加 `./assets/1.jpg` 文件,便可以看到对应用户的头像被修改了

注意: 支持导出成 HTML、PDF 等格式。语法是插件开发者自定义的,不具备通用性

"""


############### timeline ###############
[timeline]
# 右键菜单中展示的名称
name = "Timeline"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[timeline.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "timeline"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 图表背景颜色
BACKGROUND_COLOR = "#fafafa"
# 标题的字体颜色
TITLE_COLOR = "#555"
# 标题的字体大小
TITLE_FONT_SIZE = "1.5rem"
# 标题的字宽
TITLE_FONT_WEIGHT = "bold"
# 左侧时间线的颜色
LINE_COLOR = "#eee"
# 左侧时间线的宽度
LINE_WIDTH = "2px"
# 时间圆点的颜色
CIRCLE_COLOR = "#999"
# 时间圆点的直径
CIRCLE_DIAMETER = "0.7em"
# 时间圆点的位置: top
CIRCLE_TOP = "0.6em"
# 时间的字体颜色
TIME_COLOR = "#555"
# 自动插入的模板
TEMPLATE = """```timeline
# 使用一级标题表示 timeline 的标题

## 2022-10-1
### 使用二级标题表示时间,三到六级标题表示内容
支持简单的 markdown 语法
- 这是无序列表项 1
- 这是无序列表项 2
---
支持 **加粗**,*斜体*,`代码`,~~删除~~,[链接](https://github.com/obgnail/typora_plugin),![图片](https://avatars.githubusercontent.com/u/48992887?s=96&v=4)
不支持代码块,因为开发者不希望代码块发生嵌套

## 2023-10-1
语法是开发者自定义的,谨慎使用。

"""


############### echarts ###############
[echarts]
# 右键菜单中展示的名称
name = "Echarts"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[echarts.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "echarts"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 渲染器: canvas/svg(参考:https://echarts.apache.org/handbook/zh/best-practices/canvas-vs-svg/)
RENDERER = "svg"
# 导出时echarts转成什么格式
# 可选: png/jpg/svg
# 注意: png/jpg只有在canvas渲染器的时候可用,svg只有在使用svg渲染器的时候可用
EXPORT_TYPE = "svg"
# 图表默认高度
DEFAULT_FENCE_HEIGHT = "300px"
# 图表背景颜色
DEFAULT_FENCE_BACKGROUND_COLOR = "#f8f8f8"
# 自动插入的模板
TEMPLATE = """```echarts
// 提供内置变量:
//   1. myChart: echarts实例
//   2. echarts: echarts模块
//   3. option:  echarts实例的option
//   4. this:    echarts插件实例
// 更多示例:https://echarts.apache.org/examples/zh/index.html#chart-type-line
// 代码块里的所有内容都会被eval,请注意安全问题
// 可以使用如下注释设置图表宽高(否则使用默认):
// {height: "300px", width: ""}

option = {
    tooltip: { trigger: 'item' },
    legend: { top: '5%', left: 'center' },
    series: [{
        name: 'Access From',
        type: 'pie',
        radius: ['40%', '70%'],
        avoidLabelOverlap: false,
        label: { show: false, position: 'center' },
        emphasis: { label: { show: true,  fontSize: 40,  fontWeight: 'bold' } },
        labelLine: { show: false },
        data: [
            {value: 1548, name: 'Search Engine'},
            {value: 735, name: 'Direct'},
            {value: 580, name: 'Email'},
            {value: 484, name: 'Union Ads'},
            {value: 310, name: 'Video Ads'}
        ]
    }]
}
```
"""


############### chart ###############
[chart]
# 右键菜单中展示的名称
name = "Chart"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[chart.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "chart"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 图表默认高度
DEFAULT_FENCE_HEIGHT = "300px"
# 图表背景颜色
DEFAULT_FENCE_BACKGROUND_COLOR = "#f8f8f8"
# 自动插入的模板
TEMPLATE = """```chart
// 提供内置变量:
//   1. myChart: chart实例
//   2. Chart:   chart类
//   3. config:  chart的config
//   4. this:    chart插件实例
// API:https://chart.nodejs.cn/docs/latest/developers/api.html
// 代码块里的所有内容都会被eval,请注意安全问题
// 可以使用如下注释设置图表宽高(否则使用默认):
// {height: "300px", width: ""}

config = {
  type: "bar",
  data: {
    labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
    datasets: [{
      label: "# of Votes",
      data: [12, 19, 3, 5, 2, 3],
      backgroundColor: [
        "rgba(255, 99, 132, 0.2)", "rgba(54, 162, 235, 0.2)", "rgba(255, 206, 86, 0.2)",
        "rgba(75, 192, 192, 0.2)", "rgba(153, 102, 255, 0.2)", "rgba(255, 159, 64, 0.2)"
      ],
      borderColor: [
        "rgba(255, 99, 132, 1)", "rgba(54, 162, 235, 1)", "rgba(255, 206, 86, 1)",
        "rgba(75, 192, 192, 1)", "rgba(153, 102, 255, 1)", "rgba(255, 159, 64, 1)"
      ],
      borderWidth: 1
    }]
  },
  // 添加事件
  // options: {
  //   onClick: e => {
  //     const canvasPosition = Chart.helpers.getRelativePosition(e, myChart);
  //     confirm(`你点击了位置: (${canvasPosition.x},${canvasPosition.y})`);
  //   }
  // }
}
```
"""


############### calendar ###############
[calendar]
# 右键菜单中展示的名称
name = "Calendar"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[calendar.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "calendar"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 图表默认高度
DEFAULT_FENCE_HEIGHT = "800px"
# 图表背景颜色
DEFAULT_FENCE_BACKGROUND_COLOR = "#f8f8f8"
# 自动插入的模板
TEMPLATE = """```calendar
// 提供内置变量:
//   1. calendar: calendar实例
//   2. Calendar: Calendar类
//   3. option:   calendar的option
//   4. this:     calendar插件实例
// example:https://nhn.github.io/tui.calendar/latest/tutorial-06-daily-view
// API: https://github.com/nhn/tui.calendar/blob/main/docs/en/apis/options.md
// 代码块里的所有内容都会被eval,请注意安全问题
// 可以使用如下注释设置图表宽高(否则使用默认):
// {height: "800px", width: ""}

const today = new Date();
const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
const nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);

option = {defaultView: 'week'};
calendar.createEvents([
    {id: 'event1', calendarId: 'cal2', title: 'meeting', start: yesterday, end: today},
    {id: 'event2', calendarId: 'cal1', title: 'appointment', start: yesterday, end: nextMonth},
]);
```
"""


############### abc ###############
[abc]
# 右键菜单中展示的名称
name = "ABC"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[abc.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "abc"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 乐谱的可视化选项,请参考: https://paulrosen.github.io/abcjs/visual/render-abc-options.html
# 常用的配置:
#   - scale: 用于指定乐谱的缩放比例。
#   - staffwidth: 用于指定乐谱谱表的宽度。
#   - responsive: 用于指定乐谱在响应式布局中的行为,例如 "resize" 表示在窗口大小改变时重新渲染乐谱。
VISUAL_OPTIONS = { scale = 1.0, staffwidth = 400, responsive = "resize" }
# 图表默认高度
DEFAULT_FENCE_HEIGHT = "300px"
# 图表背景颜色
DEFAULT_FENCE_BACKGROUND_COLOR = "#f8f8f8"
# 自动插入的模板
TEMPLATE = """```abc
X:1
T:Twinkle, Twinkle, Little Star
M:4/4
L:1/4
K:C
G2 G2|A2 A2|B2 B2|c3 z|G2 G2|A2 A2|B2 G2|c3 z||
```
"""


############### callouts ###############
[callouts]
# 右键菜单中展示的名称
name = "Callouts"
# 是否启用此二级插件
# typora1.8版本已经原生支持callouts,但是:
#   1. 其仅支持五种类型的callouts,
#   2. 其不支持fold callouts(如: > [!NOTE]-)。
#   3. 此插件兼容原生callouts
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[callouts.config]
# callout的阴影
box_shadow = "0 0.2rem 0.5rem #0000000d, 0 0 0.05rem #0000001a"
# 为标题设置颜色(和left_line_color一样)
set_title_color = true
# 鼠标悬停在fold callout时展示其内容
hover_to_show_fold_callout = true
# 自动插入的模板
template = "> [!NOTE]\n> this is note"
# 使用的字体。一旦修改此选项,就需要修改下面所有的icon
# 具体的icon值请参考:
#   旧版本Typora:Typora/resources/app/style/font-awesome-4.1.0/css/font-awesome.css
#   新版本Typora:Typora/resources/style/font-awesome-4.1.0/css/font-awesome.css
#   所有的icon及其对应的值:https://www.adfwebmagazine.jp/wp-content/uploads/test_v4.1.pdf
font_family = "FontAwesome"

# 所有【类型不属于list选项的callouts】都会使用默认的样式
# 默认的背景颜色
default_background_color = "#fafafa"
# 默认的左边线颜色
default_left_line_color = "#777777"
# 默认的icon
default_icon = "\\f075"

# callout的类型:
#  - type:            自定义的类型
#  - background_color:背景颜色
#  - left_line_color: 左侧竖线颜色
#  - icon:            图标
list = [
    { type = "tip", background_color = "#d8f2e5", left_line_color = "#3abd7e", icon = "\\f02c" },
    { type = "bug", background_color = "#feeed3", left_line_color = "#E0AC00", icon = "\\f188" },
    { type = "info", background_color = "#dff6dd", left_line_color = "#3abd7e", icon = "\\f05a" },
    { type = "note", background_color = "#e1d1eb", left_line_color = "#6a1b9a", icon = "\\f040" },
    { type = "quote", background_color = "#fafafa", left_line_color = "#777777", icon = "\\f10d" },
    { type = "example", background_color = "#f1edfd", left_line_color = "#777777", icon = "\\f133" },
    { type = "caution", background_color = "#fde7e9", left_line_color = "#c62828", icon = "\\f024" },
    { type = "failure", background_color = "#f4d4d4", left_line_color = "#c62828", icon = "\\f00d" },
    { type = "warning", background_color = "#feeed3", left_line_color = "#E0AC00", icon = "\\f071" },
    { type = "success", background_color = "#d8f2e5", left_line_color = "#3abd7e", icon = "\\f00c" },
    { type = "question", background_color = "#fff4ce", left_line_color = "#E0AC00", icon = "\\f128" },
    { type = "abstract", background_color = "#e5f8f8", left_line_color = "#777777", icon = "\\f00b" },
    { type = "important", background_color = "#d8e6f3", left_line_color = "#3b83c1", icon = "\\f132" },
]


############### marp ###############
[marp]
# 右键菜单中展示的名称
name = "Marp"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[marp.config]
# 代码块语言
# 强烈建议不要修改。如果要修改,请跟着修改TEMPLATE选项里的语言
LANGUAGE = "marp"
# 默认处于交互模式(处于交互模式下,鼠标click图表并不会展开代码块)
INTERACTIVE_MODE = true
# 自动插入的模板
TEMPLATE = """```marp
---
theme: gaia
_class: lead
paginate: true
backgroundColor: #fff
backgroundImage: url('https://marp.app/assets/hero-background.svg')
---

![bg left:40% 80%](https://marp.app/assets/marp.svg)

# **Marp**

Markdown Presentation Ecosystem

https://marp.app/

---

# How to write slides

Split pages by horizontal ruler (`---`). It's very simple! :satisfied:

"""


############### darkMode ###############
[darkMode]
# 右键菜单中展示的名称
name = "夜间模式"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[darkMode.config]
# 快捷键
hotkey = ""
# 默认进入夜间模式
default_dark_mode = false


############### noImageMode ###############
[noImageMode]
# 右键菜单中展示的名称
name = "无图模式"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[noImageMode.config]
# 快捷键
hotkey = ""
# 当处于无图模式时,鼠标悬停时重新显示图片
reshow_when_hover = true
# 默认进入无图模式
default_no_image_mode = false
# 动画持续时间(单位:ms)
transition_duration = 300
# 延迟动画时间(单位:ms)
transition_delay = 0


############### fullPathCopy ###############
[fullPathCopy]
# 右键菜单中展示的名称
name = "复制标题路径"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[fullPathCopy.config]
# 快捷键
hotkey = "ctrl+shift+y"
# 如果在空白页调用此插件,使用的文件名(因为尚不存在该文件,需要用一个默认的文件名代替)
untitled_file_name = "untitled"
# 跳过空白的标题
ignore_empty_header = false
# 标题和提示之前添加空格
add_space = true
# 使用绝对路径
full_file_path = false


############### extractRangeToNewFile ###############
[extractRangeToNewFile]
# 右键菜单中展示的名称
name = "提取选区文字到新文件"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[extractRangeToNewFile.config]
# 快捷键
hotkey = ""
# 展示窗口
show_modal = true
# 自动打开新文件
auto_open = true
# 删除原文件中提取的内容
delete_content = false


############### templater ###############
[templater]
# 右键菜单中展示的名称
name = "文件模板"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[templater.config]
# 快捷键
hotkey = ""
# 自动打开新文件
auto_open = true
# 除了默认的模板变量,还可以自定义模板变量(如果您不了解javascript,请勿修改此选项)
#   - enable   是否启用
#   - name     模板变量名(必须唯一)
#   - callback 回调函数的字符串
template_variables = [
    # 使用模板变量的方式很简单,和javascript中调用函数基本一样,有两点不同:
    #   1. 前后需要两个大括号包裹: myFunc(arg1, arg2) => {{ myFunc(arg1, arg2) }}
    #   2. 若无实参,可去掉小括号: {{ myFunc() }} 等同于 {{ myFunc }}
    # 例如(使用前记得将enable置为true):
    #   {{ author }}             =>  obgnail
    #   {{ sum(1, 2) }}          =>  3
    #   {{ sum }}                =>  300
    #   {{ sumList([1, 2]) }}    =>  3
    #   {{ contact("a", "b") }}  =>  a-b
    { enable = false, name = "author", callback = "() => 'obgnail'" },
    { enable = false, name = "sum", callback = "(v1 = 100, v2 = 200) => v1 + v2" },
    { enable = false, name = "sumList", callback = "args => args.reduce((x, y) => x + y, 0)" },
    { enable = false, name = "contact", callback = "(...args) => args.join('-')" },
]
# 模板
# 默认的模板变量:
#   {{ date }}               当前日期
#   {{ time }}               当前时间
#   {{ datetime }}           当前日期时间
#   {{ timestamp }}          当前时间戳
#   {{ weekday }}            当前周几
#   {{ yesterday }}          昨天日期
#   {{ tomorrow }}           明天日期
#   {{ dateOffset(2) }}      2天后的日期(-2表示2天前的日期)
#   {{ random }}             范围为0-1的随机浮点数
#   {{ randomInt(2, 100) }}  范围为2-100的随机整数
#   {{ randomStr }}          由字母和数字组成的随机字符串
#   {{ title }}              新建文件的标题
#   {{ filepath }}           新建文件的路径
#   {{ folder }}             当前文件的目录
#   {{ mountFolder }}        当前文件的挂载目录
#   {{ username }}           当前电脑的用户名
#   {{ range }}              当前选取的文字
#   {{ uuid }}               uuid
[[templater.config.template]]
name = "标准模板"
text = """---
title: {{title}}
date: {{date}}
tags:
---

"""
[[templater.config.template]]
name = "日记"
text = """---
title: {{title}}
date: {{date}} {{weekday}}
---

"""
[[templater.config.template]]
name = "文章写作"
text = """---
author: {{username}}
created: {{datetime}}
aliases: {{title}}
description:
tags:
---
## 关键字




## 概述和背景



## 注释


"""


############### chineseSymbolAutoPairer ###############
[chineseSymbolAutoPairer]
# 右键菜单中展示的名称
name = "中文符号自动补全"
# 是否启用此二级插件
# 注意:此插件受Typora本身配置【匹配括号和引号】的影响,如果此配置为false,那么此插件自动禁用
enable = true
# 是否在右键菜单中隐藏
hide = true
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[chineseSymbolAutoPairer.config]
# 兼容以前的行为:当用户输入【】时,不会变成【】】,而是将光标跳到】的右边
auto_skip = true
# 当光标在中间,左右两边都是成对符号,如:【|】;且用户键入Backspace时,同时删除左右两边的符号
auto_delete_pair = true
# 当框选文字时,键入中文符号,自动包裹框选文字
auto_surround_pair = true
# 自动包裹框选文字后,自动框选文字
auto_select_after_surround = true
# 需要自动补全的符号(第一项为输入符号,第二项为补全符号)
# NOTE:其实有个问题我不知道要不要修复:中文的前后引号是不一样的,如果你键入的是后引号,此时便无法正常配对补全(好像搜狗输入法就没有修复此问题)
auto_pair_symbols = [
    ["(", ")"],
    ["《", "》"],
    ["‘", "’"],
    ["“", "”"],
    ["【", "】"],
    ["「", "」"],
    ["『", "』"],
]


############### toc ###############
[toc]
# 右键菜单中展示的名称
name = "大纲目录"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[toc.config]
# 快捷键
hotkey = ""
# 是否转义标题内容
escape_header = true
# 右键侧边栏的【大纲】按钮触发
right_click_outline_button_to_toggle = true
# 当pin到页面右侧时,占据页面的20%宽度
width_percent_when_pin_right = 20
# 每次打开 Typora 时,默认弹出右侧菜单栏
default_show_toc = false


############### resourceOperation ###############
[resourceOperation]
# 右键菜单中展示的名称
name = "资源管理"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[resourceOperation.config]
# 快捷键
hotkey = ""
# 弹窗位于页面从左往右的5%位置
modal_left_percent = 5
# 弹窗占据页面的90%宽度
modal_width_percent = 90
# 弹窗占据页面的70%高度
modal_height_percent = 70
# 本插件是通过后缀名来判断是否是资源的
# 什么后缀判定为资源
resource_suffix = [".jpg", ".jpeg", ".png", ".gif", ".svg", ".webp", ".webm", ".bmp", ".mp3", ".mp4", ".ogg", ".image", ".jfif", ".gif!large"]
# 忽略的目录
ignore_folders = [".git", "node_modules"]
# 对于无后缀名的文件是否加入资源列表
collect_file_without_suffix = true
# 是否忽略html标签<img src="example.jpg">里的资源(markdown是支持插入html的,此选项问是否要忽略img标签)
ignore_img_html_element = false
# 什么后缀判定为md文件
markdown_suffix = [".md", ".markdown", ".mdown", ".mmd", ".rmarkdown", ".mkd", ".mdwn", ".mdtxt", ".rmd", ".mdtext"]
# 自动打开报告文件
auto_open = true


############### scrollBookmarker ###############
[scrollBookmarker]
# 右键菜单中展示的名称
name = "书签管理器"
# 是否启用此二级插件(此插件仅在window_tab插件启用时生效)
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[scrollBookmarker.config]
# 快捷键
hotkey = ""
# 数据持久化(作为文件保存起来)
persistence = true
# 允许【ctrl+鼠标拖拽】拖动窗口
allow_drag = true
# 当alt+click时,自动弹出窗口
auto_popup_modal = true


############### bingSpeech ###############
[bingSpeech]
# 右键菜单中展示的名称
name = "必应朗读"
# 是否启用此二级插件
#  1.实现原理:采用爬虫技术,盗取必应翻译的播放语音功能
#  2.功能完全依赖于外部环境,因此不能保证成功
#  3.开发者一时兴起做的,仅作娱乐使用
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[bingSpeech.config]
# 快捷键
hotkey = ""
# 配音。可选:
#   zh-CN-YunxiNeural
#   zh-CN-XiaoxiaoNeural
#   zh-CN-XiaoyiNeural
#   zh-CN-YunjianNeural
#   zh-CN-YunxiaNeural
#   zh-CN-YunyangNeural
#   zh-CN-liaoning-XiaobeiNeural
#   zh-CN-shaanxi-XiaoniNeural
#   zh-HK-HiuMaanNeural
#   zh-HK-WanLungNeural
#   zh-HK-HiuGaaiNeural
#   zh-TW-HsiaoChenNeural
#   zh-TW-YunJheNeural
#   zh-TW-HsiaoYuNeural
voice = "zh-CN-YunXiNeural"
# 语速(如: 20%、-50%、0%)
rate = "+20%"
# 语调(如: 20%、-50%、0%)
pitch = "0%"
# 语气。可选项请参考:https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/speech-synthesis-markup-voice#use-speaking-styles-and-roles
style = "neutral"
# 语气强度
#   0:最低程度的表达方式
#   1:中等程度的表达方式
#   2:最高程度的表达方式
style_degree = 1
# 源语言
from_language = "zh-Hans"
# 翻译语言
to_language = "en"
# 将3行文本作为一组数据发送给bing
group_lines = 3


############### imageReviewer ###############
[imageReviewer]
# 右键菜单中展示的名称
name = "图片查看器"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[imageReviewer.config]
# 快捷键
hotkey = "ctrl+alt+i"
# 点击遮罩空白处退出
click_mask_to_exit = true
# 工具栏的位置:bottom/top
tool_position = "top"
# 进入查看器后,第一张图片是?
#   1. inViewBoxImage:     当前视图里第一张图片
#   2. closestViewBoxImage:距离当前视图中心最近的一张图片
#   3. firstImage:         整篇文档的第一张图片
# 为什么是个列表?答:优先级。
# ["inViewBoxImage", "firstImage"]:首先寻找当前视图里第一张图片,若找不到,则使用文档的第一张图片
first_image_strategies = ["inViewBoxImage", "firstImage"]
# 在工具栏左侧,展示的图片信息:
#   1. index: 第几张图片
#   2. title: 图片名称
#   3. size:  图片大小
show_message = ["index", "title", "size"]
# 每次缩放的比率
zoom_scale = 0.1
# 每次旋转的角度
rotate_scale = 10
# 每次倾斜的角度
skew_scale = 1
# 每次移动的像素
translate_scale = 10
# 轮播图片时的停留时间(单位:s)
play_second = 3
# 遮罩层的不透明度
mask_background_opacity = 0.6
# 图片最多占据80%的页面宽度
image_max_width = 80
# 图片最多占据80%的页面高度度
image_max_height = 80
# 背景模糊等级: 数值越大越模糊(为0则不模糊)
blur_level = 6

# 图片支持以下操作:
#   - dummy:          无功能
#   - close:          关闭
#   - download:       下载网络图片(若此图片是本地图片,则失效)
#   - scroll:         定位到文档
#   - play:           轮播
#   - location:       打开图片路径
#   - nextImage:      下张图
#   - previousImage:  上张图
#   - firstImage:     第一张图
#   - lastImage:      最后一张图
#   - zoomIn:         放大图片
#   - zoomOut:        缩小图片
#   - rotateLeft:     图片向左旋转
#   - rotateRight:    图片向右旋转
#   - hFlip:          水平翻转图片
#   - vFlip:          垂直翻转图片
#   - translateLeft:  向左移动
#   - translateRight: 向右移动
#   - translateUp:    向上移动
#   - translateDown:  向下移动
#   - incHSkew:       图片增大水平倾斜
#   - decHSkew:       图片减小水平倾斜
#   - incVSkew:       图片增大垂直倾斜
#   - decVSkew:       图片减小垂直倾斜
#   - originSize:     还原图片尺寸
#   - fixScreen:      图片大小适配屏幕
#   - autoSize:       图片大小在【原先尺寸】和【适配屏幕】之间切换
#   - restore:        图片恢复为最初状态

# 图片的操作提供多个入口:
#   - 工具栏按钮
#   - 鼠标左中右键(可同时配合ctrl、shift、alt等修饰按键)
#   - 快捷键

# 工具栏按钮
# 有两点需要注意:
#   1. 可选项比上面的功能多了一个info,用于提示
#   2. 若是本地图片,download按钮会自动隐藏
tool_function = ["info", "download", "play", "vFlip", "hFlip", "autoSize", "rotateRight", "scroll", "location", "close"]

# 鼠标点击图片绑定的功能
# 三项分别为左键、中键、右键
mousedown_function = ["nextImage", "close", "previousImage"]
# ctrl+鼠标图片时,绑定的功能
ctrl_mousedown_function = ["hFlip", "dummy", "vFlip"]
# shift+鼠标图片时,绑定的功能
shift_mousedown_function = ["autoSize", "dummy", "dummy"]
# alt+鼠标图片时,绑定的功能
alt_mousedown_function = ["restore", "location", "dummy"]

# 当鼠标位于图片时,上下滚动绑定的功能
# 两项分别为向上滚动、向下滚动
wheel_function = ["zoomIn", "zoomOut"]
# 当鼠标位于图片时,ctrl+上下滚动绑定的功能
ctrl_wheel_function = ["rotateRight", "rotateLeft"]
# 当鼠标位于图片时,shift+上下滚动绑定的功能
shift_wheel_function = ["incHSkew", "decHSkew"]
# 当鼠标位于图片时,alt+上下滚动绑定的功能
alt_wheel_function = ["incVSkew", "decVSkew"]

# 快捷键(仅在进入查看器后可用)
# 第一项为快捷键,第二项为绑定的功能
hotkey_function = [
    # 基础
    ["j", "nextImage"],
    ["k", "previousImage"],
    ["=", "nextImage"],
    ["-", "previousImage"],
    ["shift+j", "lastImage"],
    ["shift+k", "firstImage"],
    ["l", "scroll"],
    ["q", "close"],
    ["escape", "close"],
    [" ", "play"],
    # 翻转
    ["h", "hFlip"],
    ["v", "vFlip"],
    # 旋转
    ["r", "rotateRight"],
    ["shift+r", "rotateLeft"],
    # 移动
    ["ArrowUp", "translateUp"],
    ["ArrowDown", "translateDown"],
    ["ArrowLeft", "translateLeft"],
    ["ArrowRight", "translateRight"],
    ["w", "translateUp"],
    ["s", "translateDown"],
    ["a", "translateLeft"],
    ["d", "translateRight"],
    # 大小
    ["z", "originSize"],
    ["x", "zoomIn"],
    ["c", "zoomOut"],
    ["shift++", "zoomIn"],
    ["shift+_", "zoomOut"],
]


############### markdownLint ###############
[markdownLint]
# 右键菜单中展示的名称
name = "md格式规范检测"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[markdownLint.config]
# 快捷键
hotkey = ""
# 禁用的检测规则(参考:https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md)
disable_rules = ["MD009", "MD010", "MD012", "MD013", "MD033", "MD041"]
# 将检测规则的案文翻译为中文
translate = true
# 防抖时间,在编辑后多长时间重新检测一次(单位:ms)
# 最低为1000,若<1000,则自动置为1000
debounce_interval = 1000
# 允许【ctrl+鼠标拖拽】拖动窗口
allow_drag = true
# lint通过时的提示文本
pass_text = "该文件符合规范要求"
# 弹窗的宽度
#   1. auto:  根据文字自适应
#   2. 500px: 500像素(不一定是500,可以任何正整数)
modal_width = "auto"
# 弹窗的最大高度
modal_max_height = "500px"
# 弹窗的字体大小
modal_font_size = "14px"
# 弹窗的文字行高
modal_line_height = 1.4
# 在右上角添加一个方块,用以提示lint状态(类似于idea)
# 若置为false,以下配置全部失效
use_button = true
# 方块的宽度
button_width = "12px"
# 方块的高度
button_height = "12px"
# lint通过时方块的颜色
pass_color = "#499c54"
# lint未通过时方块的颜色
error_color = "#be9117"
# 快捷键:尽力修复规范
# 目前支持修复的规范:
#   - MD031: 单独的代码块前后需要用空行隔开
#   - MD047: 文档末尾需要一个空行结尾
hotkey_fix_lint_error = ""
# 在列表中填入你希望修复的规范
try_fix_lint_error = ["MD031", "MD047"]


############### reopenClosedFiles ###############
[reopenClosedFiles]
# 右键菜单中展示的名称
name = "打开上次退出时尚未关闭的标签页"
# 是否启用此二级插件(此插件仅在window_tab插件启用时生效)
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[reopenClosedFiles.config]
# 快捷键
hotkey = ""
# 打开Typora(打开可丢弃的无标题的标签时)自动恢复上次退出时尚未关闭的标签页
# 注意:只当双击typora.exe打开Typora时生效(因为打开特定文件时,自动恢复上次退出时尚未关闭的标签页,明显不符合用户预期)
auto_reopen_when_init = false


############### hotkeyHub ###############
[hotkeyHub]
# 右键菜单中展示的名称
name = "快捷键中心"
# 是否启用此二级插件(此插件仅对有javascript基础的用户开放)
# 若要修改hotkeyHub的配置请前往同目录下的hoteykey.user.toml
# 注意:若置为false,那么hoteykey.toml的配置将失效
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[hotkeyHub.config]
# 查看注册的快捷键列表的快捷键
hotkey = ""


############### quickButton ###############
[quickButton]
# 右键菜单中展示的名称
name = "快速按钮"
# 是否启用此二级插件
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[quickButton.config]
# 切换按钮显示状态的快捷键
hotkey = ""
# 是否支持右键(右键点击按钮后,其他按钮将被隐藏)
support_right_click = true
# 按钮的尺寸
button_size = "35px"
# 按钮的圆角半径
button_border_radius = "8px"
# 按钮的阴影
button_box_shadow = "0px 1px 20px 0px rgba(0,0,0,0.1), inset 0px -1px 0px 0px rgba(0,0,0,0.1)"
# 按钮之间的间隔
button_gap = "10px"
# 按钮距离右边框的距离
position_right = "30px"
# 按钮距离底边框的距离
position_bottom = "50px"
# 是否隐藏按钮的hint,若为true,则下面buttons配置的hint选项都将失效
hide_button_hint = false
# 如果您没有javascript基础,请不要修改以下配置
# 添加的按钮:
#   disable:      禁用此按钮
#   coordinate:   按钮坐标。往上为x轴正方向,往左为y轴正方向,从零开始计数
#   icon:         按钮图标。填入css class。支持font-awesome-4.1.0和ionicons-2.0.1,所有的图标及其对应的css class请参考:https://www.adfwebmagazine.jp/wp-content/uploads/test_v4.1.pdf  和  https://ionic.io/ionicons/v2
#   size(可选):    图标大小。默认17px
#   color(可选):   图标颜色。默认跟随当前主题的配色方案
#   bgColor(可选): 图标背景色。默认跟随当前主题的配色方案
#   hint:         提示信息
#   callback:     回调函数。采用pluginName.MethodName的形式(功能就像hotkey.default.toml中的plugin参数和function参数的合体)
#                     MethodName请通过阅读源码查找。如果您不懂代码,但还是想添加按钮,有个碰运气技巧:在【右键菜单->常用插件->二级插件】的插件基本都是XXX.callback,其余插件基本都是XXX.call
#   evil(危险):    自定义回调函数。功能同hotkey.default.toml中的evil参数(它能用的,这里也能用)。这里的文本内容会被eval()。如果设置此参数,callback参数会失效
buttons = [
    { disable = false, coordinate = [0, 0], hint = "直达底部", size = "24px", icon = "fa fa-caret-down", callback = "go_top.goBottom" },
    { disable = false, coordinate = [1, 0], hint = "直达顶部", size = "24px", icon = "fa fa-caret-up", callback = "go_top.goTop" },
    { disable = false, coordinate = [2, 0], hint = "文字风格", size = "17px", icon = "fa fa-font", callback = "text_stylize.call" },
    { disable = false, coordinate = [3, 0], hint = "混排优化", size = "17px", icon = "fa fa-align-justify", callback = "md_padding.call" },
    { disable = false, coordinate = [0, 1], hint = "思维导图", size = "18px", icon = "fa fa-sitemap", callback = "markmap.onButtonClick" },
    { disable = false, coordinate = [1, 1], hint = "图片管理", size = "17px", icon = "fa fa-image", callback = "imageReviewer.callback" },
    { disable = false, coordinate = [2, 1], hint = "书签管理", size = "17px", icon = "fa fa-bookmark", callback = "scrollBookmarker.callback" },
    { disable = false, coordinate = [3, 1], hint = "高亮搜索", size = "17px", icon = "fa fa-search", callback = "search_multi.call" },
    { disable = true, coordinate = [4, 1], hint = "语法优化", size = "17px", icon = "fa fa-book", callback = "markdownLint.fixLintError" },
    # evil使用示例(更多示例请参考hotkey.default.toml):
    #   弹窗提示
    { disable = true, coordinate = [4, 0], hint = "危险操作", size = "17px", icon = "ion-asterisk", color = "#f0f8ff", bgColor = "#ff4500", evil = "() => window.confirm('this is message')" },
    #   在光标处插入javascript代码块
    { disable = true, coordinate = [4, 1], hint = "危险操作", size = "17px", icon = "ion-alert-circled", evil = '() => this.utils.insertText(null, "```javascript\n```", false);' },
    #   打开windows计算器
    { disable = true, coordinate = [5, 0], hint = "危险操作", size = "17px", icon = "ion-bug", evil = "() => this.utils.Package.ChildProcess.exec('cmd /C calc')" },
    #   打开网址
    { disable = true, coordinate = [5, 1], hint = "危险操作", size = "17px", icon = "ion-alert", evil = "() => this.utils.openUrl('https://github.com/obgnail/typora_plugin')" },
]


############### blockSideBySide ###############
[blockSideBySide]
# 右键菜单中展示的名称
name = "并列显示活动块"
# 是否启用此二级插件
enable = false
# 是否在右键菜单中隐藏
hide = true
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
[blockSideBySide.config]
# 切换的快捷键
hotkey = ""


############### autoTrailingWhiteSpace ###############
# 此插件是为了满足Markdown换行语法,除非有特殊需求,否则不建议开启此插件
# 参考:https://markdown.com.cn/basic-syntax/line-breaks.html
# issue:https://github.com/obgnail/typora_plugin/issues/202
[autoTrailingWhiteSpace]
# 右键菜单中展示的名称
name = "为文档添加结尾空格"
# 是否启用此二级插件
enable = false
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[autoTrailingWhiteSpace.config]
# 快捷键
hotkey = ""


############### redirectLocalRootUrl ###############
# 如果你主要使用obsidian或joplin来管理文件,偶尔用typora打开文件。
# 就会遇到一个问题:obsidian或joplin都是将本地资源放在同一个目录中(vault),这导致在typora打开后文件由于路径错误,无法访问本地资源。
# 此插件就是为了解决此问题,重定向本地资源根目录。
# 除非你有此需求,否则不建议开启此插件
# issue: https://github.com/obgnail/typora_plugin/issues/259
[redirectLocalRootUrl]
# 右键菜单中展示的名称
name = "重定向本地资源根目录"
# 是否启用此二级插件
# 注意:【文件的front matter的typora-root-url参数】的优先级大于【此插件】。也就是说:若文件的front matter显式设置了typora-root-url,那么此插件在该文件失效
enable = false
# 是否在右键菜单中隐藏
hide = true
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[redirectLocalRootUrl.config]
# 资源根目录,支持绝对路径(如D:\\tmp\\img)和相对路径(如.\\assets),填写时请注意转义反斜线(若为空,则此插件失效)
root = "./"
# 过滤的正则表达式:只有文件路径命中filter_regexp匹配的文件才使用此插件(若为空,则全部文件都使用此插件)
filter_regexp = ""


############### openInTotalCommander ###############
[openInTotalCommander]
# 右键菜单中展示的名称
name = "TC打开"
# 是否启用此二级插件(若要使用此插件,请先修改tc_path选项)
enable = false
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[openInTotalCommander.config]
# 快捷键
hotkey = ""
# tc路径(请修改为你电脑上的路径)
tc_path = "D:\\software\\TotalCMD_64bit_10.52\\TOTALCMD64.EXE"
# tc命令参数(参考:https://www.ghisler.ch/wiki/index.php/Command_line_parameters)
# 提供内置环境变量:
#   1. $f: 当前文件路径
#   2. $d: 当前文件所属目录
#   3. $m: 当前挂载目录(侧边栏的根目录)
tc_args = '/O /T /P=L  /L="$f"'


############### pluginUpdater ###############
[pluginUpdater]
# 右键菜单中展示的名称
name = "升级插件"
# 是否启用此二级插件
# 注意:此插件目前仅支持windows系统,若为其他系统,则此插件失效
# 注意:此插件依赖于commander插件,若禁用了commander,则此插件失效
# 注意:若您删除了文件./plugin/updater/updater.exe,则此插件失效
enable = true
# 是否在右键菜单中隐藏
hide = false
# 在右键菜单中的出现顺序(越大越排到后面,允许负数)
order = 1
# 插件配置
[pluginUpdater.config]
# 快捷键
hotkey = ""
# 众所周知,有些地区无法裸连github,需要使用代理(如:http://127.0.0.1:7890)
# 若值为空,则将弹出窗口,让用户填入代理;若值不为空,则将直接使用此代理,不再弹出窗口
# 除非你固定使用某代理,否则不建议使用此配置
proxy = ""
# 手动升级时是否弹窗
#   - always : 总是弹出(等待程序执行完毕后一次性弹出)
#   - error  : 只在异常时弹出
#   - silent : 总是静默
#   - echo   : 立即回显
exec_show = "echo"
# 是否启用自动静默升级(若为false,则以下配置全部失效)
# 自动升级有两个策略:
#   - 策略一:打开Typora一段时间后,执行一次升级流程
#   - 策略二:每隔一段时间,执行一次升级流程
auto_update = true
# 策略一(单位:ms,若<0,则不使用此策略)
start_update_interval = 300000   # 1000 * 60 * 5
# 策略二(单位:ms,若<0,则不使用此策略)
update_loop_interval = -1
# 自动升级时使用的回显方式(可选项和exec_show相同)
auto_exec_show = "silent"

然后这个

image-20240619182721353

改成,

"""


############### auto_number ###############
[auto_number]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "自动编号"
# 是否在右键菜单中可点击
CLICKABLE = true
# 启用侧边栏自动编号
ENABLE_SIDE_BAR = true
# 启用正文自动编号
ENABLE_CONTENT = true
# 启用TOC自动编号
ENABLE_TOC = true
# 启用表格自动编号
ENABLE_TABLE = true
# 启用图片自动编号
ENABLE_IMAGE = true
# 启用代码块自动编号
ENABLE_FENCE = true
# 导出时运用样式
ENABLE_WHEN_EXPORT = true
# 编号的下标使用的字体
FONT_FAMILY = "monospace"
# 编号的下标的位置:left/right/center
ALIGN = "center"
# 编号的下标名称
NAMES = { table = "Table", image = "Figure", fence = "Fence" }


############### fence_enhance ###############
[fence_enhance]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "代码块增强"
# 是否在右键菜单中可点击
CLICKABLE = true

# fence_enhance插件包含三个功能:button、hotkey、other。此为button,功能:在代码块右上角添加按钮
# 若置为false,以下配置全部失效
ENABLE_BUTTON = true
# 按钮的大小
BUTTON_SIZE = "1.2em"
# 按钮的间距
BUTTON_MARGIN = "0.4em"
# 按钮的位置: top
BUTTON_TOP = "0.3em"
# 按钮的位置: right
BUTTON_RIGHT = "0.5em"
# 按钮的不透明度
BUTTON_OPACITY = 0.5
# 鼠标悬停时按钮的不透明度
BUTTON_OPACITY_HOVER = 0.8
# 去掉按钮上的功能提示
REMOVE_BUTTON_HINT = false
# 自动隐藏按钮,鼠标移动到代码块才显示(注意:就算置为true,在折叠状态下的代码块也不会自动隐藏按钮。因为必须提醒用户这个代码块处于折叠状态)
AUTO_HIDE = false
# 启用复制代码功能
ENABLE_COPY = true
# 启用代码调整缩进功能(低版本Typora不可使用此功能)
ENABLE_INDENT = true
# 启用折叠代码功能
ENABLE_FOLD = true
# 折叠形式:
#   - hidden: 隐藏除第一行外的所有行
#   - scroll: 添加滚动条(可视高度只有一行,所以非常反人类)
FOLD_OVERFLOW = "hidden"
# 默认折叠所有代码块
FOLD_DEFAULT = false
# 操作成功时,icon提示的保持时间(单位:ms)
# 比如当你点击【复制代码】按钮后,icon会变成【✔】,并在保持一段时间后自动恢复。此选项就是设置这个保持时间
WAIT_RECOVER_INTERVAL = 1000
# 节流时间(单位:ms)
# 300毫秒内多次点击【复制代码】按钮,只会执行一次(此选项其实没啥意义,添加此选项只是出于强迫症)
CLICK_CHECK_INTERVAL = 300
# 自定义按钮
# 目前此插件有三个按钮:复制,缩进,折叠。此选项可以新增按钮
# 此配置是【风险】配置,如果您没有javascript基础,请不要修改此配置
#   DISABLE:   是否禁用此按钮
#   ICON:      按钮图标。填入css class。支持font-awesome-4.1.0。所有的图标及其对应的css class请参考:https://www.adfwebmagazine.jp/wp-content/uploads/test_v4.1.pdf
#   HINT:      提示信息
#   ON_INIT:   初始化函数的字符串,此函数只会最开始时被调用一次。传入的参数为:plugin,即:插件实例。例如:plu => console.log('custom fence button has init')。如果不需要,请置为空。
#   ON_RENDER: 渲染后的回调函数的字符串,页面每渲染一个代码块,都会自动调用此函数。传入的参数为:buttonElement,即:按钮标签。例如: btn => console.log('btn has render')。如果不需要,请置为空。
#   ON_CLICK:  鼠标点击时的回调函数的字符串,传入的参数为:{ev, btn, cont, fence, cid, plu},即:click事件,按钮标签,代码块文本,代码块元素,cid,插件实例。例如:({cont}) => console.log(cont)。不可为空。
CUSTOM_BUTTONS = [
    { DISABLE = true, ICON = "fa fa-bomb", HINT = "demo", ON_INIT = "", ON_RENDER = "", ON_CLICK = "({cont}) => console.log(cont)" },
]

# fence_enhance插件包含三个功能:button、hotkey、other。此为hotkey,功能:为代码块添加快捷键
# 若置为false,以下配置全部失效
ENABLE_HOTKEY = true
# 注意:此处的快捷键使用的是codeMirror的方式(参考: https://codemirror.net/5/doc/manual.html#keymaps)

# 不建议修改下面的快捷键,原因有二:
#   1. 和很多ide的快捷键保持一致
#   2. typora强制绑定了很多快捷键,实际可修改的快捷键并不多
# typora强制绑定的快捷键如下:
#   1. Ctrl-A:         "selectAll",
#   2. Ctrl-Up:        "goDocStart",
#   3. Ctrl-Down:      "goDocEnd",
#   4. Ctrl-Left:      "goGroupLeft",
#   5. Ctrl-Right:     "goGroupRight",
#   6. Alt-Left:       "goLineStart",
#   7. Alt-Right:      "goLineEnd",
#   8. Ctrl-Backspace: "delGroupBefore",
#   9. Ctrl-Delete:    "delGroupAfter",
#   10.Ctrl-[:         "indentLess",
#   11.Ctrl-]:         "indentMore",
#   12.Ctrl-U:         "undoSelection",
#   13.Shift-Ctrl-U:   "redoSelection",
#   14.Alt-U:          "redoSelection",

# 如果不想使用某个功能,请置为""
# 将当前行和上一行互换
SWAP_PREVIOUS_LINE = "Shift-Alt-Up"
# 将当前行和下一行互换
SWAP_NEXT_LINE = "Shift-Alt-Down"
# 复制当前行到下一行
COPY_PREVIOUS_LINE = "Ctrl-Alt-Up"
# 复制当前行到上一行
COPY_NEXT_LINE = "Ctrl-Alt-Down"
# 直接在下面新建一行
INSERT_LINE_NEXT = "Ctrl-Enter"
# 直接在上面新建一行
INSERT_LINE_PREVIOUS = "Shift-Ctrl-Enter"

# fence_enhance插件包含三个功能:button、hotkey、other。此为other
# 在右键菜单中启用有风险的功能(此功能会消耗巨量资源并导致Typora长时间(几秒到几十秒)失去响应)
# 目前支持的风险功能:
#   1. 调整所有代码块的缩进
#   2. 为所有无语言代码块添加语言
#   3. 批量替换代码块语言
ENABLE_DANGEROUS_FEATURES = false
# 长文本的换行会保持相同的缩进
#   1. 详见:https://github.com/codemirror/codemirror5/issues/2085
#   2. 不建议开启此功能,有较大的性能损失,会消耗大量时间去计算缩进
INDENTED_WRAPPED_LINE = false
# 高亮鼠标悬停的代码行(我嫌弃晃眼就没有开启,如果你总是找不到光标,可以开启)
HIGHLIGHT_WHEN_HOVER = false
# 通过代码块的语言设置高亮行
# 使用方法:在语言后面添加小括号,小括号注明需要高亮的行
# 举例:```js(2, 5-8, 10-12)```  表示:高亮js代码块的第2行,第5-8,10-12行
HIGHLIGHT_BY_LANGUAGE = false
# 代码行高亮时的颜色
HIGHLIGHT_LINE_COLOR = "rgba(176, 178, 180, 0.4)"


############### collapse_paragraph ###############
[collapse_paragraph]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "章节折叠"
# 是否在右键菜单中可点击
CLICKABLE = true
# 严格模式
# - true:  只当点击到h1~h6时,才触发折叠/展开
# - false: 若没有点击到h1~h6,会自动向上寻找最近的h1~h6,并触发折叠/展开。非严格模式可能会出现意想不到的事:ctrl+click在typora是非常常用的,当你不小心点错位置,标题就被折叠起来了
STRICT_MODE = true
# 在右键菜单中使用严格模式
# 此选项是STRICT_MODE的特别情况,是考虑到方便使用才添加此选项的
# 若置为false,那么右键菜单不再严格限制光标必须在标题行中,在正文区域任意位置右键就可以显示所有菜单选项
STRICT_MODE_IN_CONTEXT_MENU = false
# 记住章节是否折叠(直到关闭typora)
RECORD_COLLAPSE = true
# 各个功能对应的修饰键
#   1. 支持ctrl/alt/shift的随意组合(如"shift+alt","ctrl+shift")
#   2. 但是不能为"alt"(因为alt+click已经被【scrollBookmarker】插件占用),也不能为"shift"(因为shift+click被系统自带的【框选】功能占用)
#   3. 若为"",表示不启用此功能
#   4. 例如【COLLAPSE_SIBLINGS = "ctrl+alt"】:当用户同时按住键盘ctrl和alt,并且鼠标click标题时,会折叠/展开父章节下所有同级的章节
# 功能:
#   - COLLAPSE_SINGLE       :折叠/展开 单个章节
#   - COLLAPSE_SIBLINGS     :折叠/展开 父章节下所有同级的章节
#   - COLLAPSE_ALL_SIBLINGS :折叠/展开 当前文件所有同级的章节
#   - COLLAPSE_RECURSIVE    :递归折叠/展开 当前章节
MODIFIER_KEY = { COLLAPSE_SINGLE = "ctrl", COLLAPSE_SIBLINGS = "ctrl+alt", COLLAPSE_ALL_SIBLINGS = "ctrl+shift+alt", COLLAPSE_RECURSIVE = "" }


############### collapse_list ###############
[collapse_list]
# 是否启用插件
ENABLE = false
# 在右键菜单中展示的名称
NAME = "列表折叠"
# 是否在右键菜单中可点击
CLICKABLE = true
# 缩放标志的颜色,若为空,则跟随系统配色
TRIANGLE_COLOR = ""
# 记住章节是否折叠(直到关闭typora)
RECORD_COLLAPSE = true


############### collapse_table ###############
[collapse_table]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "表格折叠"
# 是否在右键菜单中可点击
CLICKABLE = true
# 记住章节是否折叠(直到关闭typora)
RECORD_COLLAPSE = true


############### truncate_text ###############
[truncate_text]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "文段截断"
# 是否在右键菜单中可点击
CLICKABLE = true
# 快捷键:隐藏前面的文本段
HIDE_FRONT_HOTKEY = ""
# 快捷键:显示全部的文本段
SHOW_ALL_HOTKEY = ""
# 快捷键:根据当前视图隐藏文本段
HIDE_BASE_VIEW_HOTKEY = ""
# hide_front截断后剩余文本段的数量
REMAIN_LENGTH = 80


############### export_enhance ###############
[export_enhance]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "导出增强"
# 是否在右键菜单中可点击
CLICKABLE = true
# 是否下载网络图片(若为true,有可能因为网络问题导致导出超时)
# 若置为false,则DOWNLOAD_THREADS选项失效
DOWNLOAD_NETWORK_IMAGE = false
# 下载网络图片的并发量(不建议设置得太高,否则可能触发网站/图床的反爬策略)
DOWNLOAD_THREADS = 10


############### resize_table ###############
[resize_table]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "表格调整"
# 是否在右键菜单中可点击
CLICKABLE = true
# 是否去除表格单元格最小宽度限制
REMOVE_MIX_WIDTH = true
# 单元格边线的拖拽范围(单位:px)
THRESHOLD = 20
# 记住表格放缩状态(直到关闭typora)
RECORD_RESIZE = true


############### text_stylize ###############
[text_stylize]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "文字风格化"
# 是否在右键菜单中可点击
CLICKABLE = true
# 面板的背景颜色。若为"",则跟随主题的配色方案
MODAL_BACKGROUND_COLOR = ""
# 弹出面板的快捷键
SHOW_MODAL_HOTKEY = ""
# 工具栏的按钮:
#   - weight:                加粗
#   - italic:                斜体
#   - underline:             下划线
#   - throughline:           中划线
#   - overline:              上划线
#   - superScript:           上标
#   - subScript:             下标
#   - emphasis:              强调符号
#   - title:                 标题尺寸
#   - increaseSize:          增大尺寸
#   - decreaseSize:          减小尺寸
#   - increaseLetterSpacing: 增大间隙
#   - decreaseLetterSpacing: 减小间隙
#   - family:                字体
#   - foregroundColor:       前景色
#   - backgroundColor:       背景色
#   - borderColor:           边框
#   - erase:                 移除格式
#   - blank:                 无功能,用于占位
#   - setBrush:              设置格式刷
#   - useBrush:              使用格式刷
#   - move:                  移动工具栏
#   - close:                 关闭工具栏
TOOLBAR = [
    "weight", "italic", "underline", "throughline", "overline", "title", "superScript", "subScript",
    "emphasis", "increaseLetterSpacing", "decreaseLetterSpacing", "increaseSize", "decreaseSize", "family",
    "foregroundColor", "backgroundColor", "borderColor", "setBrush", "useBrush", "erase", "blank", "move", "close"
]
# 设置样式的快捷键
#   1. hotkey: 快捷键
#   2. action: 上述的工具栏按钮
ACTION_HOTKEYS = [
    { hotkey = "", action = "foregroundColor" },
    { hotkey = "", action = "backgroundColor" },
]
# 颜色列表(由于markdown支持的html语法限制, 不支持rgb、rgba格式的颜色)
COLORS = [
    "#330000", "#331900", "#333300", "#193300", "#003300", "#003319", "#003333", "#001933", "#000033", "#190033", "#330033", "#330019", "#000000",
    "#660000", "#663300", "#666600", "#336600", "#006600", "#006633", "#006666", "#003366", "#000066", "#330066", "#660066", "#660033", "#202020",
    "#990000", "#994C00", "#999900", "#4C9900", "#009900", "#00994C", "#009999", "#004C99", "#000099", "#4C0099", "#990099", "#99004C", "#404040",
    "#CC0000", "#CC6600", "#CCCC00", "#66CC00", "#00CC00", "#00CC66", "#00CCCC", "#0066CC", "#0000CC", "#6600CC", "#CC00CC", "#CC0066", "#606060",
    "#FF0000", "#FF8000", "#FFFF00", "#80FF00", "#00FF00", "#00FF80", "#00FFFF", "#0080FF", "#0000FF", "#7F00FF", "#FF00FF", "#FF007F", "#808080",
    "#FF3333", "#FF9933", "#FFFF33", "#99FF33", "#33FF33", "#33FF99", "#33FFFF", "#3399FF", "#3333FF", "#9933FF", "#FF33FF", "#FF3399", "#A0A0A0",
    "#FF6666", "#FFB266", "#FFFF66", "#B2FF66", "#66FF66", "#66FFB2", "#66FFFF", "#66B2FF", "#6666FF", "#B266FF", "#FF66FF", "#FF66B2", "#C0C0C0",
    "#FF9999", "#FFCC99", "#FFFF99", "#CCFF99", "#99FF99", "#99FFCC", "#99FFFF", "#99CCFF", "#9999FF", "#CC99FF", "#FF99FF", "#FF99CC", "#E0E0E0",
    "#FFCCCC", "#FFE5CC", "#FFFFCC", "#E5FFCC", "#CCFFCC", "#CCFFE5", "#CCFFFF", "#CCE5FF", "#CCCCFF", "#E5CCFF", "#FFCCFF", "#FFCCE5", "#FFFFFF",
]
# 每13个颜色一行
NUM_PER_LINE = 13
# 默认颜色
DEFAULT_COLORS = { FOREGROUND = "#330000", BACKGROUND = "#FFFFFF", BORDER = "#330000" }


############### cipher ###############
[cipher]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "加密文件"
# 是否在右键菜单中可点击
CLICKABLE = true
# 加密快捷键
ENCRYPT_HOTKEY = ""
# 解密快捷键
DECRYPT_HOTKEY = ""
# 弹出提示弹窗
SHOW_HINT_MODAL = true


############### custom ###############
[custom]
# 是否启用插件
# 若置为false,那么所有二级插件都会失效
# 若要修改二级插件的配置请前往同目录下的custom_plugin.user.toml
ENABLE = true
# 在右键菜单中展示的名称
NAME = "二级插件"
# 是否在右键菜单中可点击
# 若置为false,则:不影响所有二级插件的启用状态,但是无法在右键菜单中触及
CLICKABLE = true
# 有些插件在当前光标位置下临时处于不可用状态,是否隐藏它
# 不建议置为true,原因有二:
#   1. 处于不可用状态的插件会在鼠标悬停时提示不可用的原因
#   2. 一直隐藏处于不可用状态的插件,可能导致你忘记该插件的存在
HIDE_DISABLE_PLUGINS = false
# 允许在settings.user.toml中设置custom_plugin.user.toml中的选项。若在两处皆有定义,settings.user.toml的优先级高于custom_plugin.user.toml
# 本来【二级插件】的选项应该在custom_plugin.user.toml中设置的,但是一直有收到反馈,总是有用户错误地写在了settings.user.toml。无奈只能作此兼容
# 1.如果你不理解我在说什么,并且不想弄懂,请将此选项置为true
# 2.如果你不理解我在说什么,并且想弄懂,建议查看本目录下的【请读我.md】中的【settings.XXX.toml和custom_plugin.XXX.toml的区别是什么?】章节
# 3.如果能理解我在说什么,并且知道settings.user.toml和custom_plugin.user.toml的区别,建议将此选项置为false
ALLOW_SET_CONFIG_IN_SETTINGS_TOML = true


############### slash_commands ###############
[slash_commands]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "斜杠命令"
# 是否在右键菜单中可点击
CLICKABLE = true
# 什么样的用户输入触发显示命令列表(若您不了解正则表达式,请勿修改此配置)
#  注意:keyword需要使用命名捕获组kw
#  默认值:匹配一个字符串,该字符串以/或\或、开头,后面紧跟任意数量的非/或\或、字符,且该字符串前面不可有<
TRIGGER_REGEXP = "(?<!<)[\\/、\\\\](?<kw>[^\\/、\\\\]*)$"
# 匹配策略:
#  - prefix: 前缀。即:用户输入的字符串必须是keyword的前缀。比如:用户输入para即可找到paragraph
#  - substr: 子串。即:用户输入的字符串必须是keyword的子串。比如:用户输入graph即可找到paragraph
#  - abbr:   缩写。即:用户输入的每个字符必须都存在于keyword中,并且其在keyword的索引递增。比如:用户输入pgh即可找到paragraph
MATCH_STRATEGY = "abbr"
# 命令列表
#  - enable:    是否启用
#  - type:      snippet/command/gen-snp(snippet: 在调用时插入文字片段;command: 在调用时执行逻辑命令;gen-snp: 在调用时执行函数,返回待插入的文字片段,适用于插入动态内容)
#  - icon(可选): 使用emoji作为图标
#  - hint(可选): 提示信息
#  - keyword:   关键词,必须唯一
#  - callback:  若type=snippet,则填入需要插入的文字片段;若type=command,则填入回调函数;若type=gen-snp,则填入返回字符串的函数
COMMANDS = [
    { enable = true, type = "command", icon = "📝", hint = "一级标题", keyword = "H1", callback = "() => File.editor.stylize.changeBlock('header1', undefined, true)" },
    { enable = true, type = "command", icon = "📝", hint = "二级标题", keyword = "H2", callback = "() => File.editor.stylize.changeBlock('header2', undefined, true)" },
    { enable = true, type = "command", icon = "📝", hint = "三级标题", keyword = "H3", callback = "() => File.editor.stylize.changeBlock('header3', undefined, true)" },
    { enable = true, type = "command", icon = "📝", hint = "四级标题", keyword = "H4", callback = "() => File.editor.stylize.changeBlock('header4', undefined, true)" },
    { enable = true, type = "command", icon = "📝", hint = "五级标题", keyword = "H5", callback = "() => File.editor.stylize.changeBlock('header5', undefined, true)" },
    { enable = true, type = "command", icon = "📝", hint = "六级标题", keyword = "H6", callback = "() => File.editor.stylize.changeBlock('header6', undefined, true)" },
    { enable = true, type = "command", icon = "📝", hint = "段落", keyword = "Paragraph", callback = "() => File.editor.stylize.changeBlock('paragraph')" },
    { enable = true, type = "command", icon = "📝", hint = "提升标题等级", keyword = "IncreaseHeaderLevel", callback = "() => File.editor.stylize.increaseHeaderLevel()" },
    { enable = true, type = "command", icon = "📝", hint = "降低标题等级", keyword = "DecreaseHeaderLevel", callback = "() => File.editor.stylize.decreaseHeaderLevel()" },
    { enable = true, type = "command", icon = "📝", hint = "表格", keyword = "Table", callback = "() => File.editor.tableEdit.insertTable()" },
    { enable = true, type = "command", icon = "📝", hint = "公式块", keyword = "BlockMath", callback = "() => File.editor.stylize.toggleMathBlock()" },
    { enable = true, type = "command", icon = "📝", hint = "代码块", keyword = "BlockCode", callback = "() => File.editor.stylize.toggleFences()" },
    { enable = true, type = "command", icon = "📝", hint = "引用", keyword = "Blockquote", callback = "() => File.editor.stylize.toggleIndent('blockquote')" },
    { enable = true, type = "command", icon = "📝", hint = "有序列表", keyword = "OrderedList", callback = "() => File.editor.stylize.toggleIndent('ol')" },
    { enable = true, type = "command", icon = "📝", hint = "无序列表", keyword = "UnorderedList", callback = "() => File.editor.stylize.toggleIndent('ul')" },
    { enable = true, type = "command", icon = "📝", hint = "任务列表", keyword = "Tasklist", callback = "() => File.editor.stylize.toggleIndent('tasklist')" },
    { enable = true, type = "command", icon = "📝", hint = "增加列表缩进", keyword = "ListMoreIndent", callback = "() => File.editor.UserOp.moreIndent(File.editor)" },
    { enable = true, type = "command", icon = "📝", hint = "减少列表缩进", keyword = "ListLessIndent", callback = "() => File.editor.UserOp.lessIndent(File.editor)" },
    { enable = true, type = "command", icon = "📝", hint = "在上方插入段落", keyword = "InsertParagraphAbove", callback = "() => File.editor.UserOp.insertParagraph(true)" },
    { enable = true, type = "command", icon = "📝", hint = "在下方插入段落", keyword = "InsertParagraphBelow", callback = "() => File.editor.UserOp.insertParagraph(false)" },
    { enable = true, type = "command", icon = "📝", hint = "链接引用", keyword = "DefLink", callback = "() => File.editor.stylize.insertBlock('def_link')" },
    { enable = true, type = "command", icon = "📝", hint = "脚注", keyword = "DefFootnote", callback = "() => File.editor.stylize.insertBlock('def_footnote')" },
    { enable = true, type = "command", icon = "📝", hint = "水平分割线", keyword = "Hr", callback = "() => File.editor.stylize.insertBlock('hr')" },
    { enable = true, type = "command", icon = "📝", hint = "内容目录", keyword = "Toc", callback = "() => File.editor.stylize.insertBlock('toc')" },
    { enable = true, type = "command", icon = "📝", hint = "元信息", keyword = "FrontMatter", callback = "() => File.editor.stylize.insertMetaBlock()" },
    { enable = true, type = "command", icon = "👕", hint = "粗体", keyword = "Strong", callback = "() => File.editor.stylize.toggleStyle('strong')" },
    { enable = true, type = "command", icon = "👕", hint = "斜体", keyword = "Em", callback = "() => File.editor.stylize.toggleStyle('em')" },
    { enable = true, type = "command", icon = "👕", hint = "下划线", keyword = "Underline", callback = "() => File.editor.stylize.toggleStyle('underline')" },
    { enable = true, type = "command", icon = "👕", hint = "代码", keyword = "Code", callback = "() => File.editor.stylize.toggleStyle('code')" },
    { enable = true, type = "command", icon = "👕", hint = "内联公式", keyword = "InlineMath", callback = "() => File.editor.stylize.toggleStyle('inline_math')" },
    { enable = true, type = "command", icon = "👕", hint = "删除线", keyword = "Delete", callback = "() =>File.editor.stylize.toggleStyle('del')" },
    { enable = true, type = "command", icon = "👕", hint = "注释", keyword = "Comment", callback = "() => File.editor.stylize.toggleStyle('comment')" },
    { enable = true, type = "command", icon = "👕", hint = "超链接", keyword = "Link", callback = "() => File.editor.stylize.toggleStyle('link')" },
    { enable = true, type = "command", icon = "👕", hint = "图像", keyword = "Image", callback = "() => File.editor.stylize.toggleStyle('image')" },
    { enable = true, type = "command", icon = "👕", hint = "清除样式", keyword = "ClearStyle", callback = "() => File.editor.stylize.clearStyle()" },
    { enable = true, type = "command", icon = "🧰", hint = "至顶部", keyword = "JumpTop", callback = "() => File.editor.selection.jumpTop()" },
    { enable = true, type = "command", icon = "🧰", hint = "至底部", keyword = "JumpBottom", callback = "() => File.editor.selection.jumpBottom()" },
    { enable = true, type = "command", icon = "🧰", hint = "至行首", keyword = "JumpToLineStart", callback = "() => File.editor.selection.jumpToLineStart()" },
    { enable = true, type = "command", icon = "🧰", hint = "至行尾", keyword = "JumpToLineEnd", callback = "() => File.editor.selection.jumpToLineEnd()" },
    { enable = true, type = "command", icon = "🧰", hint = "帮助", keyword = "Help", callback = "() => this.call()" },
    { enable = true, type = "gen-snp", icon = "🧩", hint = "日期时间", keyword = "Datetime", callback = "() => (new Date()).toLocaleString('chinese', {hour12: false})" },
    { enable = true, type = "gen-snp", icon = "🧩", hint = "日期", keyword = "Date", callback = "() => {let day = new Date(); return `${day.getFullYear()}/${day.getMonth() + 1}/${day.getDate()}`}" },
    { enable = true, type = "gen-snp", icon = "🧩", hint = "时间", keyword = "Time", callback = "() => {let day = new Date(); return `${day.getHours()}:${day.getMinutes()}:${day.getSeconds()}`}" },
    { enable = true, type = "gen-snp", icon = "🧩", hint = "时间戳", keyword = "Timestamp", callback = "() => (new Date()).getTime().toString()" },
    { enable = true, type = "gen-snp", icon = "🧩", hint = "星期", keyword = "Week", callback = "() => '星期' + '日一二三四五六'.charAt((new Date()).getDay())" },
    { enable = true, type = "snippet", icon = "🧩", hint = "示例片段", keyword = "SnippetExample", callback = "https://github.com/obgnail/typora_plugin" },
]


############### right_click_menu ###############
[right_click_menu]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "右键菜单"
# 是否在右键菜单中可点击
CLICKABLE = true
# 点击后是否隐藏菜单(此选项不必在此调整,可以在UI中设置)
DO_NOT_HIDE = false
# 右键二~三级菜单的最小宽度
# 很多用户使用小屏幕,三个等级的右键菜单可能占据了大量的空间。此选项用于设置二~三级菜单的最小宽度,减少占据空间(为什么不包括一级?答:那是theme该做的事)
#  - default: 保持默认(和第一级菜单相同宽度)
#  - auto   : 最小宽度根据文本长度自适应
#  - 232px  : 最小宽度为232px(不一定是232,可以是任何正整数)
MENU_MIN_WIDTH = "default"
# 移除右键菜单中除了插件以外的选项(如果你之前从不使用右键菜单,可以置为true)
HIDE_OTHER_OPTIONS = false
# 对于【启用但是没有出现在下面MENUS选项】的插件,自动将其加入到最后一个MENU
# 强烈不建议将此选项置为false,若置为false,且在MENUS中删去那些处于启用状态的插件,那么:
#   1. 那些插件依旧处于启用状态,但是就不能通过右键菜单调用了
#   2. 如果插件系统后续新增了插件,那么你就根本无法感知到新增插件的存在
FIND_LOST_PLUGIN = true
# 自定义右键菜单
# 每一个MENUS对应一个一级菜单,允许无限添加一级菜单,允许重复添加同一个插件
#   NAME: 一级菜单的名称
#   LIST: 二级菜单的插件列表("---":代表在页面上插入一个分隔横线)
#         允许填入pluginName(插件,如:help)或者 pluginName.callArg(插件的其中一个选项,如:help.donate)
[[right_click_menu.MENUS]]
NAME = "少用插件"
LIST = [
    "window_tab",
    "fence_enhance",
    "mindmap",
    "auto_number",
    "datatables",
    "resize_image",
    "resize_table",
    "collapse_list",
    "collapse_table",
    "truncate_text",
    "export_enhance",
    "cipher",
    "right_click_menu",
    "help",
    "---",
    "pie_menu",
    "go_top",
    "text_stylize",
    "toolbar",
    "slash_commands",
    "article_uploader",
    "preferences",
    "---",
    "file_counter",
    "json_rpc",
    "mermaid_replace",
    "test",
]
[[right_click_menu.MENUS]]
NAME = "常用插件"
LIST = [
    "commander",
    "markmap",
    "collapse_paragraph",
    "custom",
    "---",
    "search_multi",
    "multi_highlighter",
    "outline",
    "md_padding",
    "blur",
    "read_only",
]


############### pie_menu ###############
[pie_menu]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "圆盘菜单"
# 是否在右键菜单中可点击
CLICKABLE = true
# 快捷键
HOTKEY = ""
# 修饰键。支持ctrl/alt/shift的随意组合(如"shift+alt","ctrl+shift")。举例:若为ctrl,则 ctrl+鼠标右击 调出圆盘菜单
MODIFIER_KEY = "ctrl"
# 按钮(强制少于16个,前8个在内圈,后8个在外圈)
#  - ICON    : 图标的css class
#  - CALLABCK: 填入pluginName.callArg(插件的其中一个选项,如:help.donate。如果插件只有一个选项,那么无需callArg。二级插件前面要加【custom.】)
BUTTONS = [
    { ICON = "fa fa-book", CALLBACK = "read_only" },
    { ICON = "fa fa-asterisk", CALLBACK = "blur" },
    { ICON = "fa fa-eye", CALLBACK = "custom.noImageMode" },
    { ICON = "fa fa-adjust", CALLBACK = "custom.darkMode" },
    { ICON = "fa fa-file-text", CALLBACK = "custom.templater" },
    { ICON = "fa fa-align-justify", CALLBACK = "md_padding" },
    { ICON = "fa fa-paste", CALLBACK = "custom.fullPathCopy" },
    { ICON = "fa fa-th-list", CALLBACK = "custom.toc" },
    { ICON = "fa fa-sitemap", CALLBACK = "markmap.toggle_toc" },
    { ICON = "fa fa-font", CALLBACK = "text_stylize" },
    { ICON = "fa fa-search", CALLBACK = "search_multi" },
    { ICON = "fa fa-image", CALLBACK = "custom.imageReviewer" },
    { ICON = "fa fa-filter", CALLBACK = "custom.resourceOperation" },
    { ICON = "fa fa-wrench", CALLBACK = "preferences" },
    { ICON = "fa fa-calendar", CALLBACK = "outline" },
    { ICON = "fa fa-code", CALLBACK = "commander" }
]


############### preferences ###############
[preferences]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "启停插件"
# 是否在右键菜单中可点击
CLICKABLE = true
# 快捷键
HOTKEY = ""
# 不允许通过此插件修改启停的插件
IGNORE_PLUGINS = ["preferences", "right_click_menu", "custom", "json_rpc", "mermaid_replace", "openInTotalCommander", "redirectLocalRootUrl", "article_uploader"]


############### file_counter ###############
[file_counter]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "文件计数"
# 是否在右键菜单中可点击
CLICKABLE = false
# 当目录下的文件数量少于等于IGNORE_MIN_NUM时,忽略此目录
IGNORE_MIN_NUM = 0
# Typora允许打开小于2000000(即MAX_FILE_SIZE)的文件,大于maxSize的文件在搜索时将被忽略。若maxSize<0则不过滤
MAX_SIZE = 2000000
# Typora允许打开的文件的后缀名,此外的文件在搜索时将被忽略
ALLOW_EXT = ["", "md", "markdown", "mdown", "mmd", "text", "txt", "rmarkdown", "mkd", "mdwn", "mdtxt", "rmd", "mdtext", "apib"]
# 忽略的目录名
IGNORE_FOLDERS = [".git", "node_modules"]
# 当侧边栏出现横向滚动条时,允许ctrl+wheel进行横向滚动
CTRL_WHEEL_TO_SCROLL_SIDEBAR_MENU = true
# 文本字体粗细(填入font-weight的CSS值,保持默认则填入"")
FONT_WEIGHT = "bold"
# 文本字体颜色(填入color的CSS值,保持默认则填入"")
COLOR = ""
# 文本背景颜色(填入background-color的CSS值,保持默认则填入"")
BACKGROUND_COLOR = ""
# 文本插入前缀
BEFORE_TEXT = ""


############### help ###############
[help]
# 是否启用插件
ENABLE = true
# 在右键菜单中展示的名称
NAME = "帮助"
# 是否在右键菜单中可点击
CLICKABLE = true


############### article_uploader ###############
[article_uploader]
# 是否启用插件
ENABLE = true
# 插件名称
NAME = "文章上传"
# 在右键菜单隐藏
HIDE = false
# 是否在右键菜单中可点击
CLICKABLE = true
# 快捷键配置
UPLOAD_ALL_HOTKEY = "ctrl+shift+1"
UPLOAD_WORDPRESS_HOTKEY = "ctrl+shift+2"
UPLOAD_CNBLOG_HOTKEY = "ctrl+shift+3"
UPLOAD_CSDN_HOTKEY = "ctrl+shift+4"
# 上传相关配置
[article_uploader.upload]
# 是否在上传之前弹出确认框(防误触)
reconfirm = true
# 改为false你可以看到selenium是怎么在浏览器中操作发表文章的
selenium = { headless = true }
# enabled: 置为false则在上传所有平台中不会上传到该平台
# hostname: 域名或ip:如137.2.3.1
# loginUrl: wordpress后台登录地址
wordpress = { enabled = true, hostname = "https://blog.bugdesigner.cn", loginUrl = "https://blog.bugdesigner.cn/superman/", username = "demo", password = "demo1" }
cnblog = { enabled = true, username = "15328642699@163.com", password = "password" }
# # cookie可能需要定期更新,f12随便找一个异步请求的,把cookie值粘过来就行,目前两天安全下车,预计两周——一个月失效
csdn = { enabled = true, cookie = "自己的cookie" }



[[right_click_menu.MENUS]]
NAME = "上传到所有平台"
LIST = [
    "article_uploader.upload_to_all_site"
]
[[right_click_menu.MENUS]]
NAME = "上传到单个平台"
LIST = [
    "article_uploader.upload_to_csdn",
    "article_uploader.upload_to_cn_blog"
]

############### json_rpc ###############
[json_rpc]
# 是否启用插件
# 警告:开启此插件后,外部将拥有node、browser两套环境,能完全控制电脑,因此如果您不是开发人员,请勿开启此插件
ENABLE = false
# 在右键菜单中展示的名称
NAME = "外部操纵Typora"
# 是否在右键菜单中可点击
CLICKABLE = false
# rpc server选项
SERVER_OPTIONS = { port = 5080, host = "127.0.0.1", path = "/", strict = false }


############### mermaid_replace ###############
[mermaid_replace]
# 是否启用插件
# 此插件目前已经处于半废弃状态,请勿开启
ENABLE = false
# 在右键菜单中展示的名称
NAME = "mermaid组件替换"
# 是否在右键菜单中可点击
CLICKABLE = false


############### test ###############
[test]
# 是否启用插件
# 此插件乃开发者于开发阶段使用,请勿开启
ENABLE = false
# 在右键菜单中展示的名称
NAME = "测试专用"
# 是否在右键菜单中可点击
CLICKABLE = false

注意,这里是自己

image-20240619182846405

这里也是

image-20240619183008954

posted @ 2024-06-19 18:33  小呆呆不爱睡觉  阅读(27)  评论(0编辑  收藏  举报