适用读者:已经配好界面(S01-B04),想让手不离键盘的人;以及"某个快捷键突然没反应"的人。
前置:S01-B04。
实测环境:IDEA 2025.x 键位(文档口径);旧文表为 2021–2022 版,键位冲突处已标注。
覆盖旧文:A-1368(Windows 键位,181 点)、A-1369(macOS 键位,144 点)、A-1363(快速生成代码,98 点)、A-1364(全局搜索,21 点)、A-1365(格式化,26 点)、A-1370(快捷键失效与冲突,40 点)= 510 点。
上一篇:S01-B04 · IDEA 基本功:界面、视图、外观与编码习惯
下一篇:S01-B06 · IDEA 插件:安装、选型与成本。
标注约定:
Win列为 Windows/Linux 键位,Mac列为 macOS 键位。个别键位随版本微调,实际以Settings → Keymap搜索框为准(本文 §6 会教你查)。
1. 一句话结论
别背键位,背"动作"。 旧文两张表合计 325 条,其中真正每天用到的不到 20 个;把这 20 个练成肌肉记忆,其余按需在 Keymap 里搜。
这个顺序很重要:先知道有这个动作,再去找键位;反过来(先背键位)会出现"手会按,但不知道该在什么时候用"。
2. 20 个动作(覆盖日常 90% 的操作)
| # | 动作 | Win | Mac | 什么时候用 |
|---|---|---|---|---|
| 1 | 到处搜(文件/类/符号/动作/设置) | Shift Shift |
Shift Shift |
找任何东西的第一反应 |
| 2 | 全项目文本搜索 | Ctrl+Shift+F |
⌘⇧F |
找字符串、配置项、报错文案 |
| 3 | 文件内查找/替换 | Ctrl+F / Ctrl+R |
⌘F / ⌘R |
局部改动 |
| 4 | 跳转到定义 | Ctrl+B 或 Ctrl+左键 |
⌘B / ⌘+点击 |
读源码的入口 |
| 5 | 查被谁调用 | Alt+F7 |
⌥F7 |
改方法前必做 |
| 6 | 快速看定义(不跳走) | Ctrl+Shift+I |
⌥Space |
瞥一眼实现 |
| 7 | 后退 / 前进 | Ctrl+Alt+← / → |
⌘⌥← / → |
跳转乱了之后复位 |
| 8 | 最近文件 | Ctrl+E |
⌘E |
在几个文件间来回切 |
| 9 | 万能修复 | Alt+Enter |
⌥↩ |
报红、缺 import、语法提示 |
| 10 | 自动补全(基础) | Ctrl+Space ⚠ |
⌃Space ⚠ |
⚠ 常被输入法占用,见 §6 |
| 11 | 补全(智能类型) | Ctrl+Shift+Space |
⌃⇧Space |
只补类型匹配的候选 |
| 12 | 生成代码(构造/Getter/Override…) | Alt+Insert |
⌘N |
建类之后第一件事 |
| 13 | 包围(try/catch、if…) | Ctrl+Alt+T |
⌘⌥T |
给已有代码套结构 |
| 14 | 格式化 | Ctrl+Alt+L |
⌘⌥L |
提交前 |
| 15 | 优化 import | Ctrl+Alt+O |
⌃⌥O |
提交前(与格式化配对) |
| 16 | 重命名(语义级) | Shift+F6 |
⇧F6 |
改名字别手工替换 |
| 17 | 提取变量 / 方法 | Ctrl+Alt+V / Ctrl+Alt+M |
⌘⌥V / ⌘⌥M |
把长表达式拆开 |
| 18 | 行操作(上下移/复制/删除) | Alt+Shift+↑↓ / Ctrl+D / Ctrl+Y |
⌥⇧↑↓ / ⌘D / ⌘⌫ |
排版与试错 |
| 19 | 运行 / 调试 | Shift+F10 / Shift+F9 |
⌃R / ⌃D |
主循环 |
| 20 | 断点(行断点 / 表达式求值) | Ctrl+F8 / Alt+F8 |
⌘F8 / ⌥F8 |
调试入门(深水区见 J04) |
练习法:一天只练 1 个动作,把它对应的鼠标路径禁掉。一周就能拿下 7 个,三周覆盖全表。这比"背速查表"有效得多。
3. 搜索是最高频的动作,值得单独练
| 想找什么 | 用什么 | 说明 |
|---|---|---|
| 文件 | Shift Shift → 输入文件名 |
支持模糊匹配:usvc 能匹到 UserService |
| 类 | Ctrl+N |
只搜类 |
| 符号(方法/字段) | Ctrl+Shift+Alt+N |
跳到某个方法 |
| 动作/命令 | Shift Shift → 输入动作名(如 reformat) |
不知道键位时就用这个,等同于"用自然语言找命令" |
| 设置项 | Shift Shift → 输入设置名 |
不用记菜单位置 |
| 某段文本 | Ctrl+Shift+F |
全项目 |
| 当前文件结构 | Ctrl+F12 |
大文件里跳方法最快 |
第 4 行是旧文没提但最有价值的一条:记不住"格式化"按什么?双击 Shift 输入 reformat 回车即可。IDEA 的键位学习曲线因此可以平缓很多。
4. 代码生成:psvm / sout 之外还有一套
4.1 Live Template 缩写(敲完按回车/Tab)
| 输入 | 生成 |
|---|---|
psvm 或 main |
public static void main(String[] args) {} |
sout |
System.out.println() |
soutv |
System.out.println("var = " + var) |
fori |
for (int i = 0; i < ; i++) {} |
iter |
增强 for 遍历数组/集合 |
ifn |
if (obj == null) {} |
prsf / psf |
private static final / public static final |
thr |
throw new |
来源:Settings → Editor → Live Templates → Java(A-1363 指出这一点)。
记不住缩写:Ctrl+J(macOS ⌃J)弹出当前上下文可用的模板列表——这是 A-1363 里最实用的一句,容易被忽略。
4.2 结构化生成:Alt+Insert(⌘N)
在类内任意位置按下,可生成:构造器、Getter/Setter、toString()、equals()/hashCode()、重写方法、测试类、委托方法。
equals/hashCode一起生成:只生成其中之一是典型错误(HashMap 行为会错)。
4.3 包围:Ctrl+Alt+T(⌘⌥T)
选中代码 → 套 if、try/catch、for、synchronized、Runnable。比手写括号快,且自动补全结构。
4.4 自定义模板
Settings → Editor → Live Templates → +:比如团队常用的 log 模板(private static final Logger log = LoggerFactory.getLogger($CLASS$.class);)。自定义模板是"团队约定"(S01-B04 §5),做完要能同步给别人。
5. 格式化与重排:提交前的两条命令
| 动作 | Win | Mac | 作用范围 |
|---|---|---|---|
| Reformat Code | Ctrl+Alt+L |
⌘⌥L |
当前文件 / 选中 / 整个目录 |
| Optimize Imports | Ctrl+Alt+O |
⌃⌥O |
删未使用 + 按规则排序 |
| Auto-Indent Lines | Ctrl+Alt+I |
⌃⌥I |
只修缩进,不动换行 |
顺序:Optimize Imports → Reformat Code → git diff 自查。两者都用,diff 才干净。
前提:格式化的结果取决于 Code Style(S01-B04 §5)。团队里有人没导入同一份 Code Style,就会出现"我格式化完,他提交时又变回去"的拉锯。
6. 快捷键失效:三层排查法
旧文 A-1370 只讲了"去输入法/QQ/微信里取消热键",覆盖了第一层。完整的三层是:
第一层:本机软件抢了热键
| 常见劫持者 | 典型被抢的键 | 处置 |
|---|---|---|
| 搜狗/微软拼音等输入法 | Ctrl+Space(中英切换)、Ctrl+Shift+* |
输入法设置 → 系统功能快捷键 → 取消或改绑 |
| QQ / 微信 / 钉钉 / TIM | Ctrl+Alt+*、截图键 |
各自设置里关掉全局热键 |
| 显卡/录屏/翻译类工具 | Alt+*、Ctrl+Shift+* |
同上 |
| 浏览器扩展 | 少见于 IDE 内 | — |
找不到是谁抢的怎么办(Windows):
- 在
Settings → Keymap里右键那个动作 →Remove再Add Keyboard Shortcut,按下组合键时如果提示Conflict,它会列出冲突的动作(IDE 内部冲突)。 - 如果是外部程序占用,IDE 不会报冲突——表现为"按了毫无反应"。这时逐个退出常驻托盘程序(输入法→IM→录屏),二分法定位。
- 用
Shift Shift搜动作名,看它是否还有效:动作有效但键位无效 → 键位被抢;动作也搜不到 → IDE 侧问题(插件禁用/版本差异)。
第二层:IDE 内部键位冲突
Settings → Keymap右上角搜索框输入动作名,右侧会显示当前绑定;红色提示表示冲突。- keymap 选错:
Keymap下拉里有Windows/macOS/Eclipse/VS Code等。装了IdeaVim或Eclipse keymap插件后键位会整体变化——这是"昨天还好今天全乱"的最常见原因。
第三层:焦点不在编辑器上
- 焦点在 Terminal 工具窗时,
Ctrl+R、Ctrl+C等会被 shell 截获(Ctrl+C是中断进程)。 - 焦点在 Project 树、Run 窗口 时,键位含义不同。
- 判断法:看光标是否在编辑区闪烁;不在就
Esc或点一下编辑区。
一句话排障:先确认焦点,再查冲突,最后怀疑插件。
7. 旧文对照
| 旧文 | 内容 | 本篇处理 |
|---|---|---|
| A-1368 | Windows 键位表(158 行,按修饰键分组) | 核心 20 个动作抽成 §2;完整分组表压进附录 A(保留结构,删去纯菜单项重复条目) |
| A-1369 | macOS 键位表(119 行)+ 符号图例 | 附录 A 与 Windows 并列;符号图例(⌘⇧⌥⌃)保留在附录 A 表头 |
| A-1363 | psvm/sout/main/Ctrl+J/Live Templates |
§4 重组为"缩写表 + 结构化生成 + 自定义",补 Alt+Insert、Ctrl+Alt+T、equals/hashCode 提醒 |
| A-1364 | 全局搜索 | 并入 §3 搜索矩阵,新增"搜动作名"这条关键用法 |
| A-1365 | 格式化快捷键 | §5,补"与 Optimize Imports 配对 + Code Style 前提" |
| A-1370 | 快捷键失效(输入法、IM) | 升级为 §6 三层排查,补 IDE 内部冲突与焦点层 |
| — | 旧文没有"动作导向"的学习法 | 新增 §1 结论与练习法 |
8. 自测
- 你忘了"格式化"的快捷键,不查文档怎么在 3 秒内执行它?
Ctrl+Space按了没反应,最可能的两个原因是什么?分别怎么验证?- 为什么建议
equals()与hashCode()一起生成? - 装了
IdeaVim后Ctrl+R行为变了,属于哪一层问题? - 一天练 1 个动作 vs 一周背完 20 个,哪个留存率高?为什么?
9. 下一篇
S01-B06 · IDEA 插件:安装、选型与成本
键位练熟之后,很多人会开始"装插件"。但插件是唯一能同时影响启动速度、索引时间、键位冲突、内存占用的东西。下一篇给一套三维打分法(增益 / 成本 / 冲突),并把旧文里 40+ 个插件推荐压缩成"值得留 / 可试 / 别装"三档。
附录 A · 键位总表
数据来源:A-1368(Windows)、A-1369(macOS),按修饰键分组保留,已删除纯菜单重复项。实际以
Settings → Keymap为准。
macOS 符号对照:⌘ Command | ⇧ Shift | ⌥ Option(Alt) | ⌃ Control | ↩ Enter | ⌫ Delete | ⌦ Fn+Delete | ⎋ Esc
A.1 导航与搜索
| 动作 | Win | Mac |
|---|---|---|
| 到处搜 | Shift Shift |
⇧⇧ |
| 搜类 | Ctrl+N |
⌘O |
| 搜文件 | Ctrl+Shift+N |
⌘⇧O |
| 全项目文本 | Ctrl+Shift+F |
⌘⇧F |
| 文件内查找 | Ctrl+F |
⌘F |
| 文件内替换 | Ctrl+R |
⌘R |
| 跳到定义 | Ctrl+B |
⌘B |
| 查用例 | Alt+F7 |
⌥F7 |
| 当前文件结构 | Ctrl+F12 |
⌘F12 |
| 最近文件 | Ctrl+E |
⌘E |
| 文件内跳行 | Ctrl+G |
⌘L |
| 后退/前进 | Ctrl+Alt+←/→ |
⌘⌥←/→ |
| 到文件头/尾 | Ctrl+Home/End |
⌘↑/⌘↓ |
A.2 编辑
| 动作 | Win | Mac |
|---|---|---|
| 撤销 | Ctrl+Z |
⌘Z |
| 删除当前行 | Ctrl+Y |
⌘⌫ |
| 复制当前行到下方 | Ctrl+D |
⌘D |
| 整行上下移动 | Alt+Shift+↑/↓ |
⌥⇧↑/↓ |
| 递进选择代码块 | Ctrl+W |
⌥↑(Expand) |
| 行注释切换 | Ctrl+/ |
⌘/ |
| 块注释 | Ctrl+Shift+/ |
⌘⌥/ |
| 光标处单词删除 | Ctrl+Backspace |
⌥⌫ |
| 大小写切换 | Ctrl+Shift+U |
⌘⇧U |
| 展开/折叠代码 | Ctrl++ / Ctrl+- |
⌘+ / ⌘- |
| 全部折叠 | Ctrl+Shift+- |
⌘⇧- |
A.3 重构与生成
| 动作 | Win | Mac |
|---|---|---|
| 重命名 | Shift+F6 |
⇧F6 |
| 提取变量 | Ctrl+Alt+V |
⌘⌥V |
| 提取方法 | Ctrl+Alt+M |
⌘⌥M |
| 内联 | Ctrl+Alt+N |
⌘⌥N |
| 生成代码 | Alt+Insert |
⌘N |
| 包围 | Ctrl+Alt+T |
⌘⌥T |
| 重写/实现 | Ctrl+O / Ctrl+I |
⌃O / ⌃I |
| 格式化 | Ctrl+Alt+L |
⌘⌥L |
| 优化 import | Ctrl+Alt+O |
⌃⌥O |
A.4 运行与调试
| 动作 | Win | Mac |
|---|---|---|
| 运行 | Shift+F10 |
⌃R |
| 调试 | Shift+F9 |
⌃D |
| 停止 | Ctrl+F2 |
⌘F2 |
| 步过 / 步入 / 步出 | F8 / F7 / Shift+F8 |
F8 / F7 / ⇧F8 |
| 继续 | F9 |
⌥⌘R |
| 切换行断点 | Ctrl+F8 |
⌘F8 |
| 求值表达式 | Alt+F8 |
⌥F8 |
| 查看所有断点 | Ctrl+Shift+F8 |
⌘⇧F8 |
A.5 视图与工具窗
| 动作 | Win | Mac |
|---|---|---|
| Project | Alt+1 |
⌘1 |
| Run / Debug | Alt+4 / Alt+5 |
⌘4 / ⌘5 |
| Terminal | Alt+F12 |
⌥F12 |
| Git | Alt+9 |
⌘9 |
| Structure | Alt+7 |
⌘7 |
| 复位布局 | Shift+F12 |
⇧F12 |
| 最大化工具窗 | Ctrl+Shift+F12 |
⌘⇧F12 |
完整键位(含 Ctrl+Alt、Ctrl+Shift 各组共 300+ 条)以
Settings → Keymap或官方键位文档 为准;本文只保留"动作能找到、键位能用"的最小集。
本篇属于系列《S01 · 开发环境与工具链》。旧文来源:A-1363/1364/1365/1368/1369/1370;点位映射见 ../coverage.csv。