Sublime中Changelog文件需手动或配置关联Markdown语法高亮;可用Snippet快速插入规范版本条目;Markdown Preview需启用toc扩展支持锚点跳转;保存时可用conventional-changelog-lint校验格式合规性。

Changelog 文件该用什么语法高亮
Sublime 默认不会把 CHANGELOG.md 或 changelog.md 当作 Markdown 处理,导致标题、列表、代码块全无样式,写起来像纯文本。这不是 bug,是 Sublime 的文件名匹配规则没覆盖常见变体。
手动切换语法:右下角点击当前语法名(比如 “Plain Text”),在弹出菜单里选 Markdown;或者按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Set Syntax: Markdown 回车。
一劳永逸的办法是配置文件关联:
- 打开
Preferences → Settings – Syntax Specific - 粘贴这段 JSON:
{ "extensions": ["changelog.md", "CHANGELOG.md", "Changelog.md"], "syntax": "Packages/Markdown/Markdown.sublime-syntax" } - 保存后,所有匹配的文件自动用 Markdown 语法高亮
怎么快速插入符合规范的版本条目
手敲 ## [1.2.3] - 2024-06-15 这类标题既慢又容易格式错位。Sublime 没内置 Changelog 模板,但可以用 Snippet 补上这个缺口。
新建 Snippet:Tools → Developer → New Snippet…,填入内容:
<snippet><content><![CDATA[## [${1:1.0.0}] - ${2:`strftime("%Y-%m-%d")`}
<h3>Added</h3><ul><li></li></ul><h3>Changed</h3><ul><li></li></ul><h3>Fixed</h3><ul><li>]]></content><tabTrigger>chlog</tabTrigger><scope>text.html.markdown</scope></snippet>保存为 changelog.sublime-snippet(路径无所谓,Sublime 会自动加载)。之后在 Markdown 文件里输入 chlog 再按 Tab,就能生成带日期和分类的空条目。
-
${1:1.0.0}是占位符,光标会停在这儿,方便你直接改版本号 -
${2:`strftime(...)`}调用 Python 的strftime,实时生成当天日期 -
<scope>text.html.markdown</scope>确保只在 Markdown 文件中触发,避免误用
为什么用 Markdown Preview 插件预览时链接不跳转
很多人装了 MarkdownPreview 插件,但点 [v1.2.0](#120) 这种锚点链接没反应——不是插件坏了,是默认渲染器(Python-Markdown)不启用 toc 扩展,导致标题没生成 ID。
要让锚点生效,得改插件配置:
- 打开
Preferences → Package Settings → Markdown Preview → Settings - 在用户设置里加这段:
"markdown_extensions": [ "toc", "fenced_code", "tables" ]
- 重启预览(快捷键
Ctrl+Shift+P→Markdown Preview: Preview in Browser)
注意:toc 扩展会给每个标题自动加 id,比如 ## [1.2.0] 变成 <h2 id="_120">[1.2.0]</h2>,这样 [v1.2.0](#_120) 才能跳转。
Git 提交前怎么检查 Changelog 格式是否合规
靠人眼扫 Unreleased 段落有没有漏写、日期对不对,效率低还容易漏。Sublime 本身不提供校验,但可以借力命令行工具,在保存后自动跑一次检查。
推荐用 conventional-changelog-lint(简称 ccl),它专检 Conventional Changelog 格式:
- 全局安装:
npm install -g conventional-changelog-lint - 在项目根目录建
.commitlintrc.json,内容至少含:{"extends": ["@commitlint/config-conventional"]} - 配合 Sublime 的
SublimeOnSaveBuild插件,在保存CHANGELOG.md时自动执行:ccl --from=HEAD~1 --to=HEAD
错误会直接显示在 Sublime 底部状态栏,比如 error: subject may not be empty [subject-empty]。别指望它查拼写或语序,它只管结构合规性。
真正难的是语义一致性:比如一个“Fixed”条目到底该归到哪个版本、要不要拆成多个 commit——这些没法靠工具判断,得靠团队约定和人工 review。

















