推荐全局关闭editor.formatonsave,再按语言显式启用:javascript、typescript设为true,jsonc设为false;配prettier需开启prettier.requireconfig;eslint需禁用quiet并启用linttask;补全优先选免费离线的windsurf而非copilot。

启用保存时自动格式化(editor.formatOnSave)必须配语言级开关
全局开启 editor.formatOnSave 很容易导致 JSON、YAML 或配置文件被意外重排,尤其在团队协作中引发无意义的 diff。关键不是“开或不开”,而是按需控制哪些语言生效。
推荐做法是:全局设为 false,再对目标语言显式启用:
"editor.formatOnSave": false"[javascript]": { "editor.formatOnSave": true }"[typescript]": { "editor.formatOnSave": true }-
"[jsonc]": { "editor.formatOnSave": false }(保留手动编辑自由度)
如果用了 Prettier,还要加 "prettier.requireConfig": true,避免项目没配 .prettierrc 时 fallback 到默认规则造成风格漂移。
ESLint 错误不显示在行尾?检查 eslint.quiet 和 LSP 状态
很多人装了 ESLint 插件却看不到内联错误提示,不是插件没装好,而是两个隐藏开关被忽略了:eslint.quiet 默认为 true,会压制所有提示;eslint.validate 在新版本中已被弃用,必须依赖语言服务器(LSP)自动激活。
正确配置只需两行:
"eslint.quiet": false-
"eslint.lintTask.enable": true(确保后台校验常驻)
验证是否生效:打开一个 JS 文件,故意写 console.olog(),看错误是否以灰色小字出现在行尾——不是靠悬停,而是直接“写”在代码旁边。若仍不出现,运行命令 Developer: Toggle Developer Tools,查 Console 里是否有 ESLint server failed to start 类报错,大概率是项目根目录缺 package.json 或没装 eslint 包。
别盲目装 Copilot,先试试 Windsurf + editor.inlineSuggest.enabled
Copilot 要订阅、要联网、要登录 GitHub,而 Windsurf(原 Codeium)完全免费,支持离线轻量模型,且补全建议默认就走 VSCode 原生的 editor.inlineSuggest 通道——这意味着它和 IntelliSense 共存,不抢焦点、不弹窗、不打断输入流。
启用前提很简单:
- 装 Windsurf 插件后,确保
"editor.inlineSuggest.enabled": true(VSCode 1.86+ 默认开启) - 禁用其他补全插件的 inline 模式,比如关闭 Copilot 的
"github.copilot.inlineSuggest.enable": false,避免建议打架 - 在 JS/TS 文件中输入
fetch,看行尾是否立刻浮现带参数签名的完整调用建议
Windsurf 的真实优势不在“多聪明”,而在“不打扰”:它不会在你敲 if 时强行推一整段逻辑,只在你真正需要时给一行精准补全。
Ctrl+Shift+P 之后输什么?高频命令优先绑定快捷键
很多人把 Ctrl+Shift+P 当万能入口,但每天输十次 “format document” 不如一次配好快捷键。真正影响效率的不是功能有没有,而是触达路径够不够短。
以下三个命令值得立刻绑定物理按键:
-
editor.action.formatDocument→ 绑定Shift+Alt+F(和系统默认一致,无需记忆) -
workbench.action.terminal.toggleTerminal→ 绑定Ctrl+`(比每次点图标快 2 秒) -
editor.action.addCommentLine→ 绑定Ctrl+/(注释/取消注释,高频到肌肉记忆)
别碰“全部命令都绑快捷键”这种事。VSCode 的键盘快捷方式本质是减法工具:删掉你不用的,留下你每天必按的三五个,剩下的继续走 Ctrl+Shift+P 搜——搜得快,是因为你只记关键词,比如输 “git st” 就能唤出 Git: Stage Changes。
最常被忽略的其实是「格式化器冲突」:Prettier 和 ESLint 规则打架时,editor.formatOnSave 可能静默失败,表面看代码没变,实际校验已中断。遇到保存后既不格式化也不报错,第一反应不该是重装插件,而是打开输出面板(Ctrl+Shift+U),选 ESLint,看有没有 “conflict with prettier” 字样。











