cmd+shift+i无反应是因为缺少或未启用对应语言的格式化扩展:js/ts需pretterr或eslint,python需官方扩展并安装black等,go需配置go.formattool;同时检查settings.json是否覆盖规则、语言模式是否正确、formatonsave是否开启及环境变量是否一致。

VS Code 里按 Cmd+Shift+I 没反应?先确认格式化器已装且启用
Mac 上 VS Code 默认不自带任何语言的代码格式化能力,Cmd+Shift+I(即“Format Document”)只是触发指令,背后必须有具体格式化器干活。常见现象是按键后毫无反应、提示“没有可用的格式化程序”,或只对部分文件生效——大概率是没装对应扩展,或装了但没设为默认。
- JavaScript/TypeScript:装
ESLint或Prettier扩展,并在设置里把editor.defaultFormatter设为esbenp.prettier-vscode或dbaeumer.vscode-eslint - Python:必须装
ms-python.python(官方 Python 扩展),它内置autopep8/black/yapf支持;若用black,还需确保本地已通过pip install black安装 - Go:装
golang.go扩展后,默认调用gofmt;如需goimports,得在设置中把go.formatTool改成goimports - 注意:某些扩展(如旧版
Prettier)在 M1/M2 Mac 上可能因架构不兼容报错,建议优先选标有 “Universal” 或更新于 2023 年后的版本
格式化时缩进变乱、引号全改双引号?检查 settings.json 里的硬编码规则
VS Code 的格式化行为不是只靠扩展决定的,用户级或工作区级的 settings.json 会直接覆盖扩展默认配置,导致“明明装了 Prettier 却不按 .prettierrc 走”。典型表现是:保存后缩进从 2 变 4、单引号强制转双引号、对象换行策略失效。
- 打开命令面板(
Cmd+Shift+P),输入 “Preferences: Open Settings (JSON)” 进入settings.json - 删掉显式写死的
editor.insertSpaces、editor.tabSize、javascript.preferences.quoteStyle等字段——让格式化器自己管 - 确保有
"[javascript]": { "editor.defaultFormatter": "esbenp.pretterrc-vscode" }这类语言专属配置,而不是全局一把抓 - 如果项目根目录有
.prettierrc或eslint.config.js,VS Code 会自动读取;但若settings.json里同时写了prettier.singleQuote: false,它就会优先生效,绕过配置文件
保存时自动格式化失效?别只开 editor.formatOnSave
editor.formatOnSave 是开关,但光开它不够。Mac 用户常忽略两个关键联动项:一是文件是否被识别为对应语言模式(右下角显示 “Plain Text” 就完蛋),二是格式化器是否真能处理当前文件类型。
本文档主要讲述的是Android的资源与国际化设置;资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML,PNG以及JPEG文件XML文件根据描述的不同有不同格式。这份文档描述可以支持什么样的文件,语法,以及各种格式。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- 右下角语言模式必须正确:点击那里,选 “JavaScript React” 而不是 “JavaScript”(JSX 需要额外支持),选 “TypeScript React” 而非 “TypeScript”
- 确认
editor.formatOnSaveMode是file(默认),而非modifications(只格式化修改行,易漏) - 某些格式化器(如
prettier)对文件后缀敏感:.ts 文件走 TypeScript 规则,.tsx 必须单独配"[typescriptreact]"块,否则保存无反应 - 如果用了 ESLint + Prettier 混合方案,务必安装
esbenp.prettier-vscode并禁用eslint.format.enable,否则两者打架,保存时可能只执行一半
终端里跑 prettier --write 成功,VS Code 却报错?路径和 Node 版本不一致
VS Code 内置终端和图形界面进程加载的 Shell 环境不同,尤其 Mac 使用 zsh 且通过 nvm 或 fnm 管理 Node 版本时,VS Code 启动时可能根本没读 ~/.zshrc,导致找不到全局安装的 prettier 或 Node 版本太低。
- 在 VS Code 里打开集成终端(
Ctrl+`),执行which prettier和node -v,对比你手动开的 Terminal 输出是否一致 - 若不一致,在 VS Code 设置里搜
terminal.integrated.env.osx,添加:"PATH": "/opt/homebrew/bin:/usr/local/bin:${env:PATH}"(适配 Apple Silicon 或 Intel 路径) - 更稳的方式:不依赖全局命令,改用项目级
node_modules/.bin/prettier—— 在settings.json中指定prettier.prettierPath为./node_modules/.bin/prettier - 注意:
nvm用户不要在settings.json里硬写/Users/xxx/.nvm/versions/node/v18.17.0/bin/prettier,路径一升级就断
真正麻烦的永远不是“怎么按快捷键”,而是格式化器本身有没有被正确发现、有没有权限读配置、以及 VS Code 进程到底加载了哪套环境变量——这些点不厘清,重装十遍扩展也没用。









