ctrl+alt+o仅清理当前文件未使用import,不处理变量和函数;删变量需alt+enter单点操作或analyze→run inspection by name批量扫描unused local symbol等项。

Ctrl+Alt+O 只删 import,不碰变量和函数
想一键删掉当前文件里没用的 import,直接按 Ctrl+Alt+O(Win/Linux)或 Cmd+Option+O(Mac)。它只处理导入语句,对 let unusedVar = 1、function unusedFn() 或 type UnusedType 完全没反应。很多人误以为这个快捷键能“清理全部”,结果删完 import 还剩一堆灰标变量,以为功能坏了——其实是用错了场景。
- JSDoc 里的
@type {MyType}不算引用,import会被保留 -
import type在tsconfig.json里配了"importsNotUsedAsValues": "error"时也可能留着 - 动态 import(如
import(`./${name}.ts`))静态分析不到,import不会被删 - 如果删得不干净,先执行
File | Invalidate Caches and Restart…,勾选清除文件系统缓存和 VCS 日志索引
Alt+Enter 删除单个未用变量/函数/类型
WebStorm 把未使用的局部变量、函数声明、type 或 interface 标成灰色,悬停显示 unused local variable。光标停在名字上,按 Alt+Enter,选 Remove unused declaration 就能删掉。这个操作只作用于当前声明,不跨作用域,也不影响其他文件。
- 支持
const/let/var、function声明、type和interface - 若被
typeof、keyof、泛型参数或 JSDoc 引用,可能不会被标记为未使用 -
interface被其他类型extends或&时,WebStorm 可能误判为“未使用”,需人工核对
Analyze → Run Inspection by Name 批量扫未用符号
要整个项目批量清理,不能靠快捷键,得走菜单:Analyze → Run Inspection by Name,输入 unused,从列表里选:
-
Unused local symbol:删未用的局部变量、常量 -
Unused function:删未调用的函数声明(不含箭头函数或导出函数) -
Unused type declaration:删未被引用的type或interface
指定范围(比如 Entire project),点 OK 后结果以列表呈现,可多选 + 右键 Apply fix 一键批量删。但删完立刻跑一下类型检查(Ctrl+Shift+F10)或看 TS Server 日志——Cannot find name 'MyType' 这类报错不是功能出错,是你代码里还留着引用。
Ctrl+Alt+L 是格式化,不是“智能整理”
Ctrl+Alt+L 只做代码风格统一:缩进、空格、换行、括号位置等。它不会删空行、合并重复 import、提取重复逻辑,也不会识别“这段代码其实可以封装成函数”。有人指望它顺手把松散的 if 块收成三元表达式,或者把硬编码字符串抽成常量——它做不到。
- 它不改逻辑,只改排版
- 若你开了 Prettier 插件,
Ctrl+Alt+L默认会交由 Prettier 处理,行为可能和内置格式器不同 - 想让格式化包含“删除多余空行”或“强制单引号”,得在
Settings → Editor → Code Style → JavaScript/TypeScript里手动勾选对应选项
type 或 interface,可能让类型推导断裂,而 IDE 不会提前预警。











