vs code默认不强制加或删分号,是否添加取决于启用的格式化工具及配置;需排查并关闭javascript.format.semicolons(设为"remove"或"ignore")、prettier.semi、eslint自动修复及console.log代码片段中的分号。

VS Code 默认不会强制加或删分号,是否自动添加分号,完全取决于你当前启用的格式化工具及其配置。如果你发现保存后多了分号,大概率是 prettier、eslint 或 VS Code 内置的 javascript.format.semicolons 在起作用——得逐个排查并关掉对应开关。
检查并关闭 javascript.format.semicolons
这是 VS Code 自带 JS 格式化器的控制项,优先级高、容易被忽略。它和插件无关,只要没显式禁用,就可能悄悄生效。
- 打开
settings.json(快捷键Ctrl+Shift+P→ 输入 “Preferences: Open Settings (JSON)”) - 添加这一行:
"javascript.format.semicolons": "remove"(设为"ignore"也可,但"remove"更彻底) - 如果已存在
"javascript.format.semicolons",确认值不是"insert" - 该设置只对
.js文件生效;.ts和.vue需要额外配对应语言块
禁用 Prettier 的 semi 规则
如果你装了 esbenp.prettier-vscode 插件(绝大多数人用了),它默认开启 semi: true,会覆盖其他设置。
- 在
settings.json中添加:"prettier.semi": false - 如果是 Vue 项目且用
vetur,还需补上:"vetur.format.defaultFormatterOptions": {"prettier": {"semi": false}} - 注意:仅改
prettier.config.js不够,VS Code 会优先读取settings.json里的prettier.*配置 - 若同时启用了
editor.formatOnSave,这个配置就会在每次保存时生效
避免 ESLint 自动修复插入分号
ESLint 本身不加/删分号,但配合 source.fixAll.eslint 保存时自动修复,就可能把 semi 规则当“错误”来修——尤其当你项目里有 "semi": ["error", "never"] 却又没关自动修复时。
- 检查
settings.json是否含:"editor.codeActionsOnSave": {"source.fixAll.eslint": true} - 要么删掉这行,要么确保项目
.eslintrc.js里semi规则设为["warn", "never"]或直接移除 - 临时禁用 ESLint 格式化:加一行
"eslint.enable": false(不推荐长期用,仅用于验证) - 注意:ESLint 的修复行为受
eslint.autoFixOnSave和editor.codeActionsOnSave双重控制
console.log 片段自带分号怎么去掉
这不是格式化问题,而是代码片段(Snippet)写死的。VS Code 默认的 log 片段末尾带分号,改配置无效,必须手动替换片段。
- 按
Ctrl+Shift+P→ 输入 “Preferences: Configure User Snippets” → 选javascript.json - 加入这段(覆盖默认):
{ "Print to console": { "prefix": "log", "body": ["console.log($1);"], "description": "Log output to console" } } - 把
"console.log($1);"改成"console.log($1)"就去掉了分号 - 同理需修改
typescript.json,否则 TS 文件里仍带分号
最常被漏掉的是 javascript.format.semicolons 和 console.log 片段这两处——前者藏得深,后者根本不在格式化链路里。改完记得重启 VS Code 窗口或重载窗口(Ctrl+Shift+P → “Developer: Reload Window”),否则部分设置不生效。











