Ctrl+. 是精准修复当前行问题的快捷键,仅针对光标所在行提供可修复项;Ctrl+Alt+F 可手动触发全文件修复;保存时自动修复需配置 editor.codeActionsOnSave 并确保 ESLint 正确加载和规则可修复。

Ctrl+. 快速修复当前行问题
这不是“一键全修”,而是精准干预:光标停在报错行,按 Ctrl+.(macOS 是 Cmd+.),弹出菜单里会列出该位置所有可操作的修复项。比如 no-unused-vars 报错时,菜单可能提供 “Remove unused variable 'x'”;semi 缺分号则直接显示 “Add semicolon”。它只作用于当前上下文,不扫全文件,适合调试或审查阶段局部确认。
常见卡点:
- 菜单为空?说明 ESLint 没识别到该行有
Fixable规则——检查规则是否启用、是否被/* eslint-disable */注释屏蔽 - 选项灰掉?可能是该规则在当前配置中设为
"warn"而非"error",部分版本对 warn 级别不暴露修复入口 - Vue 的
<script setup>块里不触发?确认parserOptions.parser是"@typescript-eslint/parser",不是已废弃的旧 parser
Ctrl+Alt+F 手动触发全文件修复
VSCode 默认没绑定这个快捷键,需手动加进 keybindings.json。命令 ID 是 eslint.executeAutofix,不是 editor.action.formatDocument(那是 Prettier 的)。
实操步骤:
- 打开命令面板(
Ctrl+Shift+P),搜 “Preferences: Open Keyboard Shortcuts (JSON)” - 添加这段(支持 Windows/Linux/macOS):
[{"key": "ctrl+alt+f","command": "eslint.executeAutofix","when": "editorTextFocus && editorLangId == javascript || editorLangId == typescript || editorLangId == vue"}] - 保存后,在任意 JS/TS/Vue 文件里按
Ctrl+Alt+F,就会跑一次eslint --fix逻辑
注意:eslint.executeAutofix 只走项目配置里的可修复规则,不会越界改逻辑类问题(如 complexity 或 react-hooks/exhaustive-deps)。
保存时自动修复必须配对生效
editor.codeActionsOnSave 不是开关,是调用契约:它告诉 VSCode “保存时请调用 ESLint 的修复能力”,但前提是 ESLint 插件已加载、配置文件被识别、且规则本身带 fixable 标记。
最简有效配置(写进 settings.json):
"editor.codeActionsOnSave": { "source.fixAll.eslint": true }
容易漏的配套项:
-
eslint.validate必须显式列语言模式:["javascript", "typescript", "vue", "typescriptreact"],否则.tsx或.vue文件压根不进 ESLint 流水线 -
eslint.options.extensions要补后缀:[".js", ".ts", ".tsx", ".vue"],尤其.vue默认不包含 - 如果开了
"editor.formatOnSave": true且用了 Prettier,务必禁用"source.fixAll"全局项,只留"source.fixAll.eslint",否则格式化冲突导致保存卡住
为什么有些规则明明标着 ✅ 却不修复?
ESLint 官网规则页右上角的 ✅ 表示“该规则理论上支持修复”,但实际能否触发,取决于三重过滤:
-
配置值必须是数组:写成
"semi": "error"无效,得是"semi": ["error", "always"]或["warn", "never"] -
文件匹配要过关:检查
.eslintrc.js里的files或overrides是否排除了当前路径,运行npx eslint --print-config src/App.tsx看输出里rules.semi是否真为数组形式 -
Node.js 环境链路要通:插件调的是工作区本地的
eslint包,不是全局安装的。如果报 “Failed to load config”,大概率是node_modules路径不对,或 Node 版本低于 ESLint 要求(v8.56+ 才稳定支持新配置格式)
最隐蔽的坑:用 eslint.config.js 新格式时,VSCode 插件必须 ≥ v2.4.10,旧版直接无视该文件——查插件更新时间,别信“已安装最新版”的直觉。


















