跳至正文
来两杯美式
返回

mac 系统的 IntelliJ IDEA 快捷键大全

By 来两杯美式
发布于

这是一篇发布于 2017 年 7 月的 IDEA 快捷键笔记。当年 IntelliJ IDEA 已经改成年份命名(2017.1/2017.2),macOS Sierra 已是主流,⌘ / ⌥ / ⌃ / ⇧ 四个修饰键的组合在开发圈里基本达成共识。

文中的快捷键按当年笔记的视角整理——以「Mac OS X 10.5+」Keymap 为准(这是 IDEA 在 mac 上最常用的预设键位)。如果你在用其他 Keymap,按对应键位替换即可。


一、键位约定

在开始前,先把 mac 上的修饰键说清楚。JetBrains 全家桶在 mac 上的记号是:

符号键名等价 PC 键
CommandCtrl
Option / AltAlt
ControlCtrl
ShiftShift
Return / EnterEnter
Delete(退格)Backspace
fn功能键

IDEA 允许你换 Keymap(Preferences → Keymap),但本文按 Mac OS X 10.5+ 这个默认键位写——绝大多数 mac 用户的现状。


二、配置文件位置

摘自早期笔记的速查。

# IDEA 自定义 JVM 配置
/Users/<用户名>/Library/Preferences/IntelliJIdea<版本>/idea.vmoptions

# IDEA 日志
/Users/<用户名>/Library/Logs/IntelliJIdea<版本>/idea.log

当年 IDEA 还叫 IntelliJIdea2017.1 / IntelliJIdea2017.2 这种目录,结构清晰。如果需要排查启动参数或性能问题,看这两个文件最直接。


三、Postfix 模板(黑魔法)

摘自早期笔记。

Postfix 是 IDEA 的「后缀补全」——你写一个表达式,打个点 + 后缀,IDEA 自动展开成模板代码。比 Live Template(写前缀触发)更顺手,是当年很多人转投 IDEA 的核心理由之一。

后缀适用对象展开效果
100.for数字for (int i = 0; i < 100; i++) { }
var.nn变量if (var != null)
var.null变量if (var == null)
boolean.else布尔值if (!boolean)
boolean.if布尔值if (boolean)
arr.iter数组/集合for (Var v : arr)
Foo.new类名new Foo()
var.return变量return var;
var.sout变量System.out.println(var);
var.synchronized变量synchronized (var) { }
var.try变量 / 方法try { var } catch (Exception e) { }
boolean.while布尔值while (boolean) { ... }

实战对比

普通写法:

public void doSomething(User user) {
    if (user != null) {
        System.out.println(user);
    }
}

Postfix 写法(先写表达式再补后缀):

user.nn {
    user.sout
}

提示:在 if/while 等控制流里写 boolean.else 还能反向操作。当年 Postfix 还不支持自定义(2017 年只有内置模板),需要自定义还是得用 Live Template。


四、编辑(Editing)

以下快捷键全部摘自早期笔记,按类别重新整理。

4.1 光标移动

快捷键作用
⌥ + →向右跳一个单词或语句
⌘ + ← / →跳到当前行开头 / 结尾
⌘ + ← / → + ⇧直接选到行开头 / 结尾
⇧ + ⏎在光标位置下开新行(不管光标在行中何处)
⌃ + ⏎自动补全:行末加分号、自动结束代码

4.2 选择

快捷键作用
⌘ + W逐级扩大选区(先选中单词,再扩到整行,再扩到方法体……)
⌘ + ⇧ + [ / ]向上 / 向下选中到代码块开始 / 结束(配合粘贴板)
⌥ + ⇧ + →向右按单词 / 段选
⌃ + ⌘ + G批量选中:在当前文件中所有出现该文本的地方添加光标

4.3 复制 / 删除

快捷键作用
⌘ + D复制当前行(或选区)
⌘ + ⇧ + V打开「最近复制过的缓冲区」,可粘贴前几次 ⌘+C 的内容(神器
⌘ + ⇧ + Delete退回到上次修改的地方
⌥ + ⌫删除光标前的整个单词或中文句
⌥ + fn + ⌫删除光标后的整个单词或中文句
⌃ + ⇧ + J将下一行合并到当前行行尾

4.4 注释 / 折叠 / 格式化

快捷键作用
⌘ + /注释 / 取消注释当前行(按语言自动选 //#<!-- -->
⌘ + + / -展开 / 折叠代码块
⌘ + ⌥ + L格式化代码(对当前类、包目录都可)
⌘ + ⇧ + U大小写切换(光标在单词上时全单词切换)
⌥ + ⇧ + F把当前光标位置 / 选区添加到收藏(Favorites)

4.5 编辑技巧

操作方法
一列同位置编辑按住 ⌥ 键下拉鼠标 → 进入「列编辑」模式
手动加行末分号⌘ + ⇧ + ⏎
自动生成 getter/setter/构造方法/toString⌃ + ⏎ 触发代码生成菜单

实战小贴士:⌘ + ⇧ + V(剪贴板历史)是最被低估的快捷键之一。比如你刚刚在文档里复制了一段配置,需要在多个不同位置粘贴——常规 ⌘+V 只能粘贴最新一次,用 ⌘+⇧+V 弹出的历史列表可以精确选 5 分钟前复制的那条


五、导航(Navigation)

摘自早期笔记。

5.1 文件 / 项目

快捷键作用
⌘ + 1打开左侧项目目录(Project 面板)
⌘ + E打开最近打开过的文件列表
⌘ + F4关闭当前打开的文件
⌘ + N打开符号列表(类成员 / 文件搜索)

5.2 代码导航

快捷键作用
⌘ + B进入声明(等同于 ⌘ + 左键)
⌘ + U跳到父类(接口)
⌘ + O重写父类方法(Override)
⌃ + ⌥ + H查看方法被调用处(Call Hierarchy)
⌘ + F12显示当前类中的全部方法(Structure 弹窗)
⌘ + G跳转到指定行
⌘ + ⌥ + ←退回到上一个光标所在位置
⌘ + ⌥ + →前进到下一个光标所在位置
⌘ + ⇧ + Delete退回到上次修改的位置(与编辑一节同源,再列一次)

5.3 搜索

快捷键作用
⌘ + ⌥ + ⇧ + N方法名查找(Symbol 全局搜索)
⌘ + F当前文件查找
⌘ + R当前文件替换
⌘ + ⇧ + F全局查找(Find in Path)
⌘ + ⇧ + R全局替换(Replace in Path)
⌥ + F3逐个往下查找相同文本并高亮显示

5.4 高亮选中

快捷键作用
⌘ + ⇧ + F7高亮显示当前文件中所有出现选中文本的位置(按 Esc 取消)

实战小贴士:⌘ + ⇧ + F7 配合 Esc 取消,是临时阅读代码最舒服的方式——一眼看到当前变量/方法在文件里被用了几次,看完按 Esc 立刻消失,不污染视图。


六、重构(Refactor)

快捷键作用
⌘ + ⌥ + C把选中的表达式提取为常量(Constant)
⌘ + ⌥ + V提取为局部变量(Variable)
⌘ + ⌥ + F提取为成员变量(Field)
⌘ + ⌥ + M提取为方法(Method)—— 重构最常用
⌘ + F6移动(Move)/ 重命名文件、类、方法
⇧ + F6重命名(Refactor → Rename)—— 所有引用同步更新
⌘ + ⌥ + O优化 import(删除无用、按字母排序)

实战小贴士:当年很多人不知道 ⇧ + F6 和 ⌘ + R 的区别。⇧+F6 是「重命名」——所有引用同步改;⌘+R 是「文本替换」——只改当前文件。改类名/方法名一定要用 ⇧+F6,否则一堆调用方会变成 NPE 大军。


七、运行与调试(Run / Debug)

摘自早期笔记。

7.1 调试

快捷键作用
F8Step Over:下一步(不进入方法)
F7Step Into:进入方法
⌥ + F9Run to Cursor:运行到光标位置
F9Resume:恢复程序,若有下一个断点则跳到那里

7.2 运行

快捷键作用
⌃ + R运行(运行上次的 main / Spring Boot / Test)
⌃ + DDebug 模式运行
⌘ + ⇧ + F10选择运行配置并启动

当年(2017)还没有 ⌘+R / ⌘+D 这种直白键位(那是后年才加入的),都是 ⌃+R / ⌃+D 这种老 Keymap。


八、Postfix 模板与 Live Template 的区别

很多新手会把这两个混在一起,它们是 IDEA 两个不同的补全系统:

维度PostfixLive Template
触发位置表达式后打点 + 后缀空行/前缀上输入缩写
适用场景给已有变量快速加逻辑生成整段代码骨架
例子user.soutSystem.out.println(user)psfipublic static final int
自定义2017 年还不能自定义Settings → Live Templates 可自由加

当年最常用的 Live Template 速记:sout = System.out.println()psvm = public static void mainfori = for (int i = 0; ...)


九、IDEA 启动慢的解决

摘自早期笔记,原文是「未尝试方法三」。

idea.vmoptions 中加入:

-Djava.net.preferIPv4Stack=true

强制 JVM 使用 IPv4 栈(当年 macOS 上 IPv6 解析问题会导致 IDEA 启动时卡住)。

完整 vmoptions 调优还可以考虑:-Xms / -Xmx(堆内存)、-XX:ReservedCodeCacheSize(代码缓存)、-XX:+UseG1GC(G1 垃圾回收器)。但当年 2017.1 默认参数对大多数项目已经够用,不建议新手一上来就改。


十、推荐设置:代码补全不区分大小写

摘自早期笔记。

Preferences → Editor → Code Completion,把 Case sensitive completion 设为 None

效果:stringStringSTRING 都能匹配到 java.lang.String强烈建议打开——Java 类名遵循大驼峰,原本输 S 就想出 String,开了之后输 s 也能出。


十一、IDEA 的其他 mac 友好特性

2017 年的 IDEA 在 mac 上还有几个值得记住的特性:


十二、给 2017 年读完这篇的你

IDEA 的快捷键不是靠背的,是靠肌肉记忆——刻意用一周,比背一遍表有用得多。建议路径:

  1. 第 1 周:只练编辑类(⌘+D / ⌘+W / ⌘+⇧+V / ⌘+/)
  2. 第 2 周:加上导航类(⌘+B / ⌘+O / ⌘+E / ⌘+⇧+F)
  3. 第 3 周:加上重构类(⇧+F6 / ⌘+⌥+M / ⌘+⌥+V)
  4. 第 4 周:加上调试类(F7 / F8 / F9 / ⌥+F9)
  5. 第 2 个月起:开始自定义 Keymap——把不顺手的键换成自己顺手的

一年后回头看,你不再需要鼠标。这是 IDEA 老炮的标志。


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
查看系列全部文章
  1. 01.Linux 命令大全:SSH 免登录、查找、防火墙与运维必会命令
  2. 02.Maven 入门到精通:依赖管理、生命周期与多模块项目
  3. 03.Nginx:高性能原理与常用配置(负载均衡 / 跨域 / 防盗链)
  4. 04.Maxwell 数据初始化:maxwell-bootstrap 全量同步实践
  5. 05.mac 系统的 IntelliJ IDEA 快捷键大全

上一篇
一文拿下 JVM(上):内存区域全景
下一篇
Maven 入门到精通:依赖管理、生命周期与多模块项目