VS Code格式化失效的首要原因是语言模式未正确设置,需手动点击右下角选择对应语言;其次须在settings.json中为每种语言单独配置defaultFormatter,如"[javascript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"};Shift+Alt+F仅格式化整文件,选区格式化应使用Ctrl+K Ctrl+F。

VS Code 里按 Shift+Alt+F(Windows/Linux)或 Shift+Option+F(Mac)没反应,不是快捷键坏了,而是编辑器根本没找到能干活的格式化器——它连“这是什么语言”都不知道,更别说排版了。
右下角语言模式必须对,否则格式化直接跳过
这是最常被忽略的第一道关卡。VS Code 不会自动猜文件类型,尤其当你新建一个 .js 文件但没保存、或后缀名不标准(比如 .jsx、.ts、.vue)时,状态栏右下角显示的是 Plain Text 或 Detect Language,此时所有格式化命令都静默失效。
- 点击右下角语言标识,手动选成
JavaScript、TypeScript、Python等具体语言 -
.vue文件要区分:Vue 2 项目用Vetur,Vue 3 项目必须切到Volar,两者配置互不兼容 - Markdown 里的代码块(如
```js)不会自动触发 JS 格式化,得先把光标点进代码块,再点右下角切换成JavaScript
Ctrl+K Ctrl+F 是唯一稳定格式化选区的快捷键
Shift+Alt+F 绑定的是 editor.action.formatDocument,它默认只处理整文件;而 Ctrl+K Ctrl+F 直连 editor.action.formatSelection,只要满足条件,就一定只动你选中的部分。
- 选区必须构成合法语法单元:只选一个
{、半截字符串、或跨开闭标签(如只选<div>没选</div>),Prettier/Black 会直接放弃 - 推荐组合技:
Ctrl+L(选中整行)→Ctrl+K Ctrl+F;或把光标放在{上,按Shift+Alt+→逐层扩展到函数/对象边界,再格式化 - 别依赖
Shift+Alt+F自动降级为选区格式化——这取决于插件是否实现了formatRange协议,Black 在旧版本里就不支持,Prettier 支持但也不保证每次触发
装了插件≠能用,settings.json 里必须配对语言块
全局设置 editor.defaultFormatter 对多数语言无效。VS Code 要求你明确告诉它:“JavaScript 文件请交给 Prettier,Python 文件请交给 Black”,否则命令发出去,没人接。
- 打开
settings.json(Ctrl+Shift+P→Preferences: Open Settings (JSON)) - 写语言专属配置,不是全局一把抓:
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
- 如果同时装了 Prettier 和 ESLint,必须禁用 Prettier 对分号、引号的控制(如
"prettier.semi": false),否则和 ESLint 的source.fixAll.eslint冲突,保存时代码来回跳
对齐 ≠ 格式化,特殊符号对齐要用 Alignment 插件
想让一堆 =、:、=> 垂直对齐?Prettier 不干这事。它只管缩进、换行、空格这些结构性排版,不碰“视觉对齐”这种风格化操作。
- 装
Alignment插件(ID:annsk.alignment) - 选中文本后,按
Shift+Alt+=(对齐首个匹配符)、Alt+=(对齐所有匹配符)或Alt+-(连空格一起对齐) - 自定义对齐符号:在
settings.json里加"alignment.characterList",比如加入"//"就能对齐 C++/MATLAB 注释
真正难的不是按哪个键,而是搞清「你在对齐什么」——是让代码符合语言规范(用 Prettier/Black),还是让变量赋值看起来整齐(用 Alignment)。混着用可以,但得知道谁管哪一段。


















