sublime text 保存自动格式化需插件、cli 工具、路径配置三者齐全;jsprettier 必须手动配置绝对路径,nvm 用户需用 nvm which node 推导;python 格式化勿混用 autopep8 与 sublimeblack;html-css-js prettify 在 st4 已失效;格式化依赖语法 scope 而非后缀;务必验证 cli 路径在 sublime 中可执行。

Sublime Text 本身不支持保存时自动格式化,所有“一保存就变整齐”的效果,都依赖插件 + 本地 CLI 工具 + 正确路径配置三者同时到位。少一个环节,就静默失效——而且通常不报错,只让你以为“功能坏了”。
JsPrettier 的 prettier_cli_path 必须手动填对
JsPrettier 不会自动找 prettier 命令,它只认你填进配置里的绝对路径。Sublime 的运行环境和终端 PATH 经常不一致,which prettier(macOS/Linux)或 where prettier(Windows)查到的路径,必须一字不差粘贴进插件设置里。
- 打开
Preferences → Package Settings → JsPrettier → Settings - 在右侧用户设置中加入:
{ "prettier_cli_path": "/usr/local/bin/prettier", "auto_format_on_save": true, "auto_format_on_save_extensions": ["js", "jsx", "ts", "tsx", "json"], "auto_format_on_save_without_prompt": true } - 路径填错、没填、或用了别名(如
npm exec prettier),auto_format_on_save就形同虚设 - 如果用 nvm 管理 Node 版本,
prettier路径可能随 shell 启动方式变化,建议用nvm which node推导出对应 bin 目录再找prettier
Python 用 AutoPEP8 还是 Black?选一个并配死路径
别同时启用 AutoPEP8 和 SublimeBlack,它们都监听 on_post_save,会互相覆盖触发逻辑,结果是某类文件突然不格式化。
-
AutoPEP8:轻量,依赖本地autopep8命令,需在插件设置里显式填autopep8_path,比如/opt/homebrew/bin/autopep8 -
SublimeBlack:更激进,但要求black_cmd配置准确,且默认不处理.pyi或大文件(>50MB),可在设置中加"black_args": ["--skip-string-normalization"]控制行为 - 两者都不读项目级
.editorconfig或pyproject.toml,规则得硬写进插件配置
别碰 HTML-CSS-JS Prettify,它在 ST4 上基本不可用
这个插件已停止维护,在 Sublime Text 4 下大概率触发 UnicodeDecodeError 或直接无响应。即使看起来“能用”,也常因编码识别失败跳过 .vue 或 .svelte 中的 script 块。
- JS/TS/JSON/MD 统一交给
JsPrettier(配好prettier后可支持 Markdown) - CSS/SCSS/Less 推荐用
Sublime-CodeFormatter,它支持多语言、可指定 CLI 路径、不绑定单一工具 - 如果非要统一入口,可用 Sublime 的
build system方式:新建Prettier.sublime-build,内容为{ "cmd": ["prettier", "--write", "$file"], "selector": "source.js, source.ts, source.json" }再绑定到保存事件(需额外插件如Save Hook)
文件后缀和语法类型必须严格匹配
Sublime 格式化插件靠 scope(即当前视图的 syntax)判断该不该执行,不是光看文件名后缀。比如一个 .vue 文件,如果右下角显示的是 Vue Component 而非 JavaScript,JsPrettier 就不会介入。
- 检查当前文件的语法类型:菜单
View → Syntax → Open all with current extension as…可强制关联 - 确保文件编码是 UTF-8(无 BOM),BOM 会导致
prettier解析失败且不提示 - 大文件(>1MB)或含大量注释/模板字符串的 JS,
prettier可能超时退出,JsPrettier 默认不报错,只跳过
最常被忽略的其实是环境隔离问题:你在终端里 npm install -g prettier 装的命令,Sublime 可能根本看不到;而插件配置里写的路径,又容易复制成带空格的 Finder 路径或错误的 shell alias。动手前先在 Sublime Console(Ctrl+`)里跑一句 import subprocess; subprocess.run(["/usr/local/bin/prettier", "--version"]),确认它真能调通——比反复改配置高效得多。











