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

news2024/11/27 12:05:05

激活插件

下载网址是这个:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1840582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSMP整合案例

黑马程序员Spring Boot2 文章目录 1、创建项目1.1 新建项目1.2 整合 MyBatis Plus 2、创建表以及对应的实体类2.1 创建表2.2 创建实体类2.2.1 引入lombok&#xff0c;简化实体类开发2.2.2 开发实体类 3、数据层开发3.1 手动导入两个坐标3.2 配置数据源与MyBatisPlus对应的配置3…

第1讲:创建vite工程,使用框架为Vanilla时,语言是typescript,修改http端口的方法

直接在项目根目录创建 vite.config.ts文件。 在该文件中添加内容&#xff1a; import { defineConfig } from vite;export default defineConfig({server: {port: 7777,}, });最后尝试运行package.json中的Debug

【图解IO与Netty系列】Netty编解码器、TCP粘包拆包问题处理、Netty心跳检测机制

Netty编解码器、TCP粘包拆包问题处理、Netty心跳检测机制 Netty编解码器编码器解码器编解码器Netty提供的现成编解码器 TCP粘包拆包问题处理Netty心跳检测机制 Netty编解码器 网络传输是以字节流的形式传输的&#xff0c;而我们的应用程序一般不会直接对字节流进行处理&#x…

金蝶BI方案与奥威BI:智能、高效的数据分析组合

在当今数据驱动的时代&#xff0c;企业对于快速、准确、全面的数据分析需求日益增长。金蝶BI方案和奥威BI SaaS平台正是为满足这一需求而精心打造的智能数据分析工具。 方案见效快 金蝶BI方案以其高效的数据处理能力&#xff0c;能够快速地将海量数据转化为有价值的信息。通过…

跟《经济学人》学英文:2024年6月15日这期 America

America seems immune to the world economy’s problems 美国似乎对世界经济问题免疫 immune to&#xff1a;美 [ɪˈmjun tu] 对…有免疫力&#xff1b;不受…感染&#xff1b;不受…的影响&#xff1b;免疫耐受&#xff1b; Elsewhere, political dysfunction and fiscal…

api-ms-win-crt-runtime-l1-1-0.dll文件丢失的情况要怎么处理?比较靠谱的多种修复方法分享

遇到api-ms-win-crt-runtime-l1-1-0.dll文件丢失的情况实际上是一个常见问题&#xff0c;解决此类问题存在多种方法。首先我们先来了解一下api-ms-win-crt-runtime-l1-1-0.dll文件吧&#xff0c;只有了解了我们才知道怎么去解决这个api-ms-win-crt-runtime-l1-1-0.dll文件丢失的…

【机器学习】计算机图形和深度学习模型NeRF详解(2)

1. 引言 本文是"计算机图形和深度学习模型NeRF详解"系列文章的续篇&#xff0c;进一步深入探讨了NeRF的核心技术。NeRF作为一项突破性技术&#xff0c;因其能够从有限的2D图像中重建出完整的3D场景&#xff0c;而在多个领域&#xff0c;如医学成像、3D场景重建、动画…

Spring中网络请求客户端WebClient的使用详解

Spring中网络请求客户端WebClient的使用详解_java_脚本之家 Spring5的WebClient使用详解-腾讯云开发者社区-腾讯云 在 Spring 5 之前&#xff0c;如果我们想要调用其他系统提供的 HTTP 服务&#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问&#xff0c;不过由于 …

国际荐酒师携手各国际荐酒师专业委员会深化2024年度合作

国际荐酒师&#xff08;香港&#xff09;协会携手广东海上丝绸之路文化促进会及广东省城镇化发展研究会&#xff0c;深化2024年度合作&#xff0c;共同打造品荐与传播大师班培养荐酒师专业人材 近日&#xff0c;国际荐酒师&#xff08;香港&#xff09;协会、广东海上丝绸之路…

通过防抖动代码解决ResizeObserver loop completed with undelivered notifications.

通过防抖动代码解决ResizeObserver loop completed with undelivered notifications. 一、报错内容二、解决方案解释&#xff1a; 一、报错内容 我通过el-tabs下的el-tab-pane切换到el-table出现的报错&#xff0c;大致是渲染宽度出现了问题 二、解决方案 扩展原生的 Resiz…

操作系统 文件系统

实验目的&#xff1a; 掌握文件系统设计的基本思想。理解掌握文件系统基本数据结构的设计。理解掌握文件操作中涉及的数据结构访问过程。 实验内容&#xff1a; 1、编程实现一个简单的内存文件系统。实现Linux常见的一些文件操作命令。比如&#xff1a;ls/cat/cp/rm等。 实…

足底筋膜炎怎么治疗效果好得快

足底筋膜炎症状&#xff1a;疼痛是足底筋膜炎最典型和常见的症状。患者通常会感到足跟或足底区域的疼痛&#xff0c;这种疼痛可能表现为刺痛、钝痛或灼热感。疼痛的程度和频率因人而异&#xff0c;但通常会在早晨起床后或长时间休息后首次站立时最为明显。这是因为休息时足底筋…

华为云与AWS负载均衡服务深度对比:性能、成本与可用性

随着云计算的迅速发展&#xff0c;企业对于云服务提供商的选择变得越来越关键。在选择云服务提供商时&#xff0c;负载均衡服务是企业关注的重点之一。我们九河云将深入比较两大知名云服务提供商华为云和AWS的负载均衡服务&#xff0c;从性能、成本和可用性等方面进行对比。 AW…

使用CAPL创建系统变量之sysDefineNamespace

目录 0 前言 1 使用CAPL创建系统变量 0 前言 最近在项目中发现可以通过CAPL来创建系统变量&#xff0c;这样方法在一定程度上提高了代码的统一性和测试的便利性。想要加入HIL自动化测试群的小伙伴欢迎评论区留言或私信&#xff0c;让我们一起进步&#xff01; 1 使用CAPL创建…

Java23种设计模式(一)

前言 这2个月来&#xff0c;重新出发&#xff0c;从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置&#xff0c;再到后面的基础学习、数据库学习、扩展学习&#xff08;maven、mq、设计模式、spring 系列等等&#xff09;&#xff0c;边学边记录&#xff0c…

typeScript debug 调试

以leetcode 20为例 0.首先编写代码 function isValid(s: string): boolean {let stack: string[] []for (let index 0; index < s.length; index) {let x: string s[index]debuggerswitch (x) {case (:stack.push())breakcase [:stack.push(])breakcase {:stack.push(})…

契约锁电子签章平台 add 远程命令执行漏洞复现(XVE-2023-23720)

0x01 产品简介 契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通…

java.lang.ClassNotFoundException: javafx.util.Pair的问题解决与原因详解

先说解决办法: 1、引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.12</version> </dependency>2、更换代码依赖地址&#xff1a; 原来依赖地址&#xff1a; import j…

中国首例!「DataKit」上架亚马逊云科技 Marketplace add-ons

在 2022 年的 re:Invent 大会上&#xff0c;亚马逊云科技宣布了一项重大更新&#xff1a;亚马逊云科技 Marketplace 为 Amazon Elastic Kubernetes Service&#xff08;Amazon EKS&#xff09;提供了附加组件的支持。这一创新功能极大地丰富了 EKS 的生态系统&#xff0c;使用户…

linux离线安装chrony服务校准时间

基础环境 Linux forlinx 5.10.35 #53 SMP PREEMPT Thu Mar 30 01:04:19 CST 2023 aarch64 aarch64 aarch64 GNU/Linux chrony源码包 下载地址&#xff1a;https://download.tuxfamily.org/chrony/ 以chrony-4.5.tar.gz举例说明 详细步骤 1.解压chrony tar zxvf chrony-4.…