JsPrettier 保存自动格式化需正确配置 prettier_cli_path 和 format_on_save_extensions;前者须填绝对路径(nvm 用户用 nvm which node 推导),后者为精确扩展名数组(如["js","ts","vue"]),不支持 glob;reindent 非 Prettier 格式化,仅对齐缩进;HTML-CSS-JS Prettify 在 ST4 已失效,应替换为 JsPrettier。

JsPrettier 保存自动格式化必须填对 prettier_cli_path
Sublime Text 不会自动找系统里的 prettier,哪怕你在终端运行 which prettier 能看到路径,JsPrettier 默认也用不了。它只认你手动填进配置里的绝对路径。
常见错误是留空或填成 "prettier"——这会让插件去 PATH 里找,但 Sublime 的 PATH 和终端不完全一致(尤其 nvm 管理 Node 的用户),结果就是静默失效或报 File not found: prettier。
- nvm 用户务必用
nvm which node推出 Node 根路径,再拼出prettier位置,例如:/Users/xxx/.nvm/versions/node/v20.15.0/bin/prettier - 全局安装过
prettier的,先在终端跑which prettier,复制输出的完整路径 - 填进 JsPrettier 设置(Preferences → Package Settings → JsPrettier → Settings)右侧面板,字段名是
prettier_cli_path
auto_format_on_save 开关要配 format_on_save_extensions 才生效
打开 auto_format_on_save 只是第一步,它本身不决定“对哪些文件生效”。真正控制触发范围的是 format_on_save_extensions,而且匹配逻辑很严格:只看文件扩展名,不看语法 scope,也不做模糊匹配。
比如你写 ["js", "ts"],那 index.tsx 就不会被格式化;Vue 单文件组件得显式加上 "vue";TypeScript 声明文件 .d.ts 也得单独列进去。
- 推荐最小集合:
["js", "jsx", "ts", "tsx", "json", "css", "scss", "less", "vue"] - 别写
"*.js"或"**/*.ts"—— 这个字段不支持 glob,只接受纯字符串数组 - 如果项目有自定义后缀(如
.config.js),它仍按.js匹配,不用额外加
reindent 不是自动排版,别指望它重写代码结构
很多人点开菜单 View → Indentation → Reindent,发现没反应,或者缩进没变,就以为配置错了。其实 reindent 本质是个“缩进对齐工具”,不是 Prettier 那种基于 AST 的格式化器。
它只在三个前提同时满足时才工作:文件语法识别正确(右下角状态栏显示 JavaScript,不是 Plain Text)、缩进方式统一(全空格或全 Tab)、且没开启 trim_automatic_whitespace(否则末尾空格被删,reindent 直接放弃)。
- 想确认是否生效:选中几行代码,按
Ctrl+Shift+P→ 输入Reindent Lines,看有没有变化 - 如果没反应,先点右下角语言名,手动选对语法类型
- 再检查缩进:View → Indentation → Convert Indentation to Spaces,然后设为
Indent Using Spaces - 设置里搜
trim_automatic_whitespace,设为false
HTML-CSS-JS Prettify 在 ST4 已不可靠,换 JsPrettier
HTML-CSS-JS Prettify 曾经是前端格式化的首选,但它在 Sublime Text 4 上已基本失效:不支持新语法(如 TSX、CSS nesting)、无法读取 prettier.config.js、保存自动格式化开关勾上也没反应。
它的底层不是调本地 CLI,而是用内置 JS 解析器,能力有限且长期未更新。现在遇到 HTML/JS/CSS 混合文件(比如 Vue、Svelte 组件),它大概率会崩或漏格式化。
- 直接卸载 HTML-CSS-JS Prettify,避免和 JsPrettier 冲突
- JsPrettier 支持所有主流前端文件类型,只要
prettier_cli_path正确,.prettierrc或prettier.config.js就能生效 - 如果需要格式化 HTML 模板中的内联 JS/CSS,确保
allow_inline_js和allow_inline_css设为true
实际配下来最易忽略的点是:Sublime 的 CLI 路径环境和终端不一致,以及 format_on_save_extensions 的精确匹配逻辑——这两处出错,整个自动格式化链就断在看不见的地方。











