Markdown Template (.mt)
功能一览
快速开始
仓库中的
|
| 写法 | 含义 |
|---|---|
parts/a.md、../a.md |
相对于当前文件所在目录(嵌套时相对于被引入文件自身) |
/Users/me/a.md、C:/docs/a.md |
系统绝对路径 |
~/notes/a.md |
家目录 |
${workspaceFolder}/docs/a.md |
当前文件所属工作区根目录 |
https://example.com/a.md |
远程 URL;GitHub 的 blob 链接会自动改写为 raw 地址 |
a.md#安装 |
只引入 a.md 中标题为“安装”的章节(标题文本或其 slug 均可) |
路径中的空格可以直接写在引号里,也可以写成 %20;文件名里的 # 写成 %23。
文件类型
| 扩展名 | 处理方式 |
|---|---|
.md .markdown .mdown .mkd .mdx .mt |
作为 markdown 合并;剥离其 front matter;相对链接与图片自动改写为相对当前文件的路径 |
.png .jpg .gif .svg .webp 等图片 |
作为图片引入(生成 markdown 图片语法) |
其它任意扩展名(.json .html .ts .py .yaml …) |
作为围栏代码块引入,语言按扩展名映射 |
| 无扩展名 URL | 按 HTTP Content-Type 判断,无法判断时按 markdown 处理 |
参数
写在行尾的 {} 中,多个参数用空格分隔:
| 参数 | 说明 |
|---|---|
line_begin=N line_end=M |
只引入第 N 到 M 行(1-based,闭区间,负数从末尾倒数) |
heading_offset=K |
被引入 markdown 的标题整体偏移 K 级(# → ## ),Setext 标题会转成 ATX |
as="lang" |
强制作为代码块并指定语言 |
code_block=true |
把 markdown 文件也显示为代码块(原始源码) |
code_block=false |
把非 markdown 扩展名的文件当 markdown 渲染 |
optional=true |
文件缺失或获取失败时静默跳过,不显示错误、不产生诊断 |
alt="..." title="..." |
图片的 alt 与 title |
示例:
@import "src/main.ts" {line_begin=10 line_end=-1}
@import "docs/api.md#认证" {heading_offset=1}
@import "notes.txt" {as="markdown" code_block=false}
@import "https://github.com/microsoft/vscode/blob/main/README.md" {line_end=5}
命令
| 命令 | 说明 | 默认快捷键 |
|---|---|---|
| Markdown Template: 打开预览 | 在当前编辑器组打开预览 | Cmd/Ctrl+Shift+V |
| Markdown Template: 在侧边打开预览 | 在旁边打开预览 | Cmd/Ctrl+K V |
| Markdown Template: 在侧边打开锁定的预览 | 预览固定在当前文件,不跟随活动编辑器 | |
| Markdown Template: 显示源码 | 从预览回到源码 | 预览面板上 Cmd/Ctrl+Shift+V,或工具栏“源码”按钮 |
| Markdown Template: 切换源码 / 预览 | 在源码和预览之间切换 | |
| Markdown Template: 刷新预览 | 清除远程缓存并重新渲染 | 工具栏“刷新”按钮 |
| Markdown Template: 切换预览锁定 | 锁定 / 解锁当前预览 | 工具栏“锁定”按钮 |
| Markdown Template: 显示代码(展开后的文本) | 预览切换到 Code 模式:展开拼接后的纯文本,带行号 | 工具栏“代码”按钮 |
| Markdown Template: 显示 Markdown(渲染) | 预览切换回 Markdown 渲染模式 | 工具栏“Markdown”按钮 |
| Markdown Template: 切换 Markdown / 代码渲染 | 在两种渲染模式之间切换;在 .mt 编辑器中执行会先在侧边打开预览 |
|
| Markdown Template: 复制源码(.mt) | 复制原始 .mt 文本 |
|
| Markdown Template: 复制展开后的 Markdown | 复制把所有 @import 展开后的 Markdown |
工具栏“复制”按钮 |
| Markdown Template: 导出展开后的 Markdown(.md)… | 另存为普通 .md 文件 |
工具栏“导出”按钮 |
| Markdown Template: 清除远程引入缓存 | ||
| Markdown Template: 选择界面语言… | 切换扩展的界面语言(English / 中文),独立于 VS Code 的显示语言 | 工具栏语言按钮 |
这些命令也出现在编辑器标题栏的 ... 菜单、编辑器右键菜单和资源管理器右键菜单中;预览面板上的常用操作集中在预览顶部的工具栏,标题栏不再放小图标。
配置
| 设置 | 默认 | 说明 |
|---|---|---|
mt.import.maxDepth |
10 |
最大嵌套深度 |
mt.import.allowAbsolutePaths |
true |
允许引入工作区之外的绝对路径 |
mt.remote.enabled |
true |
允许 URL 引入 |
mt.remote.timeout |
10000 |
远程获取超时(毫秒) |
mt.remote.cacheTtl |
300 |
远程内容复用时长(秒) |
mt.remote.maxSize |
5242880 |
远程内容最大字节数 |
mt.preview.defaultRenderMode |
markdown |
新打开的预览使用的渲染模式:markdown 渲染 / code 展开后的纯文本 |
mt.preview.breaks |
false |
单个换行渲染为 <br> |
mt.preview.linkify |
true |
自动识别 URL 为链接 |
mt.preview.scrollPreviewWithEditor |
true |
编辑器滚动时同步预览 |
mt.preview.scrollEditorWithPreview |
true |
预览滚动时同步编辑器 |
mt.preview.updateDelay |
300 |
编辑后预览更新延迟(毫秒) |
mt.preview.fontFamily / fontSize / lineHeight |
预览字体 | |
mt.diagnostics.enabled |
true |
在编辑器中报告 @import 问题 |
在不受信任的工作区中,mt.remote.enabled 与 mt.import.allowAbsolutePaths 会被强制关闭。
界面语言
界面内置 English、中文。默认跟随 VS Code 的显示语言;点击预览工具栏右侧的语言按钮,或执行命令 Markdown Template: 选择界面语言…,可随时切换,与 VS Code 的语言互不影响。切换后预览工具栏、面板标题、@import 错误提示、诊断与提示消息即时更新;命令标题、菜单项与设置说明由 VS Code 依据 package.nls.*.json 渲染,仍跟随 VS Code 的显示语言。
选择保存在 ~/.x1/adrive-studio/markdown-template/conf.yaml,也可以手工编辑:
language: zh-cn # 或 en
与其它 Markdown 插件的关系
.mt 注册为独立语言 mt,因此 Markdown All in One 等只对 markdown 语言激活的插件默认不会作用于 .mt。如果你更需要那些插件,可以在设置中把 .mt 关联回 markdown:
"files.associations": { "*.mt": "markdown" }
此时本插件的预览、诊断等功能将不再对 .mt 生效。
开发
npm install
npm run compile # 或 npm run watch
# 在 VS Code 中按 F5 启动扩展开发宿主,会自动打开 samples 目录
npm test # 核心解析层单元测试
npm run package # 生成 .vsix
代码结构:
src/core/与 VS Code 无关的核心:指令解析、路径解析、展开器、远程缓存。src/renderer/markdown-it 渲染(带源码行映射与代码高亮);Code 模式的纯文本视图。src/preview/预览面板与管理器。src/features/诊断、文档链接、补全、命令。src/i18n.ts扩展自己的界面语言(t()、语言列表、切换事件,不依赖 vscode);src/confFile.ts读写conf.yaml。webview/预览页脚本(DOMPurify 净化、滚动同步)。docs/research/开发前对同类工具的调研记录。
License
MIT