重置Sublime Text的JSON行为需删整个用户数据目录(Windows为%APPDATA%\Sublime Text 4,macOS为~/Library/Application Support/Sublime Text,Linux为~/.config/sublime-text-4),并退出后台进程、执行subl --sync-logout登出同步;之后重装Package Control和HTML-CSS-JS Prettify插件,配置其json为true等四项参数,并确保文件编码为UTF-8、缩进为空格且宽度为2、右下角语法显示为JSON。

Sublime Text 本身没有“JSON 配置”这个独立概念——所谓还原默认 JSON 行为,本质是恢复语法识别、格式化插件、缩进规则这三块的原始状态。不能只删某个 JSON 相关文件,必须分层处理。
删错路径就白忙:真正要清的是整个 User 数据目录
很多人以为改了 Packages/User/Preferences.sublime-settings 里的 extensions 或 default_syntax 就能“还原 JSON 设置”,其实不行。只要 Packages/User 目录还在,插件、快捷键、上次打开的 .json 文件标签页全都会复活。真正重置的唯一可靠方式是删整个用户数据根目录:
- Windows:
%APPDATA%\Sublime Text 4 - macOS:
~/Library/Application Support/Sublime Text - Linux:
~/.config/sublime-text-4
删完后必须退出所有后台进程(sublime_text.exe 或 killall sublime_text),再执行 subl --sync-logout 登出同步账号,否则插件配置会从云端拉回来。
Package Control 和 JSON 插件不重装 = 格式化功能依然失效
即使清空了用户目录,Sublime 默认仍不支持 JSON 格式化。你看到的 Ctrl+Shift+P 里搜不到 JSON Reindent 或 HTML-CSS-JS Prettify,不是设置问题,是根本没装插件管理器。重装流程必须严格按顺序来:
- 启动 Sublime 后按
Ctrl+`打开控制台,粘贴官网最新 Python 脚本(2026 年 SHA256 哈希值为6f4c264a24d933ce70df5dedc1efb8001a3232031432121d212fd82e000121) - 回车执行后,必须重启 Sublime —— 右下角状态栏才会出现
JSON语法选项 - 再用
Ctrl+Shift+P输入Package Control: Install Package,装HTML-CSS-JS Prettify(别选Pretty JSON,它在 ST4 上常报ImportError: No module named 'sublime')
格式化前三个硬条件不满足,Ctrl+Alt+J 就静默失败
哪怕插件和快捷键都配好了,只要以下任一条件不满足,JSON 格式化就会卡住或无反应:
- 右下角状态栏必须显示
JSON(不是Plain Text或JSON with Comments),点它手动切换 - 文件编码必须是
UTF-8,不能是UTF-8 with BOM:用File → Reopen with Encoding → UTF-8重载 - 缩进必须统一为空格且宽度为 2:先执行
View → Indentation → Convert Indentation to Spaces,再设Indent Using Spaces
装完 HTML-CSS-JS Prettify 后,还要进 Preferences → Package Settings → HTML-CSS-JS Prettify → Settings,确保写入这四行:
{
"json": true,
"detect_indentation": false,
"indent_size": 2,
"ensure_ascii": false
}
为什么改了 Preferences.sublime-settings 没反应?重点查这三处
如果你只是编辑了 Packages/User/Preferences.sublime-settings,但 JSON 新建文件还是 Plain Text,或者扩展名映射不生效,大概率是以下问题:
- 误改了
Packages/Default/Preferences.sublime-settings—— 它是只读的,升级就重置 -
default_syntax值写错路径,比如写成Packages/JSON/JSON.sublime-syntax(实际是Packages/JavaScript/JSON.sublime-syntax) -
extensions里用了带点的键名,比如".json"(正确是"json")
最易被忽略的点:Sublime 的用户设置是浅层覆盖,不是合并。你在 Preferences.sublime-settings 里只写了 "tab_size": 2,但没写 "detect_indentation",那它就沿用默认的 true —— 打开老项目时缩进会被自动覆盖掉。


















