我见过太多人拿到新电脑的第一件事,就是打开 IntelliJ IDEA 的插件市场,按下载量从高到低一路装下去,装完重启,启动时间从 8 秒涨到 40 秒,然后转头抱怨"IDEA 怎么这么吃内存"。另一类人则完全相反,插件列表短得可怜,但每一个都精准卡在他工作流最疼的位置上,改代码、查依赖、翻日志像开了倍速。
这篇就把我这些年反复装、反复卸,最后真正留下来的 24 个 IntelliJ IDEA 插件摊开讲。不是简单报菜名,而是把每个插件解决什么问题、为什么值得占据你 IDE 的一个扩展位、装的时候有哪些坑,一次说透。文中会涉及大量配置细节和排查思路,适合已经用过 IDEA 一段时间、想让工具真正服务于效率的人;刚上手的新人也能按图索骥,少走几个月的弯路。
1. 装插件之前,先搞明白插件到底在消耗什么
1.1 插件不是"功能叠加",而是常驻代码
IntelliJ IDEA 本体是一个跑在 JVM 上的大型应用,每个插件本质上是一段被加载进来的代码。它会在 IDE 启动时注册自己,在索引阶段贡献索引项,在编辑器里挂上 PSI 监听器、扩展点、后台任务。换句话说,你装的不是一个"工具",而是一堆会常驻、会响应事件、会占内存的代码。
这个认知很关键。GitToolBox 会在每个文件底部算一次 blame,一个代码统计插件会扫描整个项目,AI 补全插件会持续维持与服务端的连接,日志高亮插件会在你滚动时反复匹配正则。成本体现在三个地方:启动变慢、堆内存上升、输入和滚动时出现肉眼可见的卡顿。前两个你能忍,第三个忍不了,因为打字有延迟是最劝退的体验。
1.2 我用三条硬标准判断一个插件留不留
- 一周内至少会用到三次。用不到的插件,界面上的每一个入口都是干扰。
- 它做的事 IDEA 原生做不到,或者原生做起来要绕三步以上。绕过一步就能完成的,直接用原生功能。
- 把它关掉之后,我能立刻想起哪里不舒服。如果说不上来,说明它本来就没价值。
反面的典型是主题、图标包、进度条动画这类"调试期玩具"。刚装上的那一周你会觉得新鲜,一个月后你会怀疑自己当初为什么要装。还有一种情况要特别注意:不要用插件去补一个本该由构建工具、CI 流水线解决的问题。代码规范应该由流水线卡住,而不是靠某个人在本地装个检查插件自觉执行。
| 插件类型 | 资源消耗 | 我建议的开法 |
|---|---|---|
| 编辑增强(快捷键、字符串处理) | 低 | 常开 |
| 静态检查(规约、缺陷扫描) | 中到高 | 手动触发,别开自动全量 |
| 版本控制增强(blame、fetch) | 中 | 常开,但把自动刷新间隔调大 |
| AI 补全 | 中到高 | 只留一个,关掉其他 |
| 主题、图标、动效 | 低但无产出 | 个人机器随意,公司机器别装 |
2. 八款把"手速"从瓶颈里解放出来的编码插件
2.1 Lombok:让实体类回到它该有的长度
一个十字段的实体类,getter、setter、构造器、toString、equals、hashCode 全写出来接近两百行,真正的信息只有那十行字段声明。Lombok 用注解在编译期生成这些方法,源码层面只保留字段。用 @Data 时要注意,它生成的 equals 和 hashCode 会包含所有非静态字段,两个只在 id 上不同的对象会被判定为不相等,这在做集合去重时容易踩坑;业务实体建议用 @Getter、@Setter 分开控制。
一个必须知道的点:从 2020.3 版本开始,IDEA 已经内置了 Lombok 插件,你不需要再去市场里单独下载。真正要开的是设置里的注解处理器:Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors,勾上 Enable annotation processing。不勾这一项,代码能编译但 IDE 里会飘满红色报错。
2.2 Key Promoter X:把鼠标操作换成肌肉记忆
这个插件的逻辑非常简单:你在 IDE 里用鼠标点了一个本来有快捷键的操作,它就在右下角弹个小提示,告诉你对应的快捷键是什么,并显示你因为这个操作浪费了多少时间。它的价值不在当下,而在于两三周之后形成的手部记忆。
实际用下来,弹窗会有点烦,建议进设置把阈值调高,只提示你重复超过十次的操作,同时关掉那些你确定不需要快捷键的项。真正值得记住的其实就那几个:跳转、重构、生成代码、查找用法。
2.3 GenerateAllSetter:一行生成所有 setter 调用
对象拷贝、构造测试数据的时候,一个个手敲 setter 是纯粹的体力活。在变量上按 Alt+Enter,选 Generate all setter with default value,它会一次性把所有 setter 调用铺出来,连默认值都给你填好。可选是否调用 getter、是否用默认值。我处理接口入参拼装的时候几乎每次都会用。
2.4 String Manipulation:字符串批量处理的瑞士刀
驼峰与下划线互转、大小写切换、行排序去重、JSON 转义与反转义、Base64 编解码、Unicode 转义,这一堆零碎操作全被塞进一个 Alt+M 菜单里。写配置、处理 SQL 片段、整理字段名的时候,它省下的时间非常可观。用得最多的是"把一列字段名批量转成常量命名",选一大段按几下键盘就完事。
2.5 CamelCase:命名格式一键循环
Shift+Alt+U 在 camelCase、PascalCase、snake_case、CONSTANT_CASE 之间循环切换。它和 String Manipulation 有功能重叠,但胜在只做一件事、只占一个快捷键。从后端拿到的字段名要转成前端风格,或者数据库列名要转成 Java 属性名,按两下就切过去了。
2.6 EasyCode:基于表结构生成基础代码
连接数据库,选中表,一键生成实体、Mapper、Service、Controller 骨架。它真正的价值是在项目冷启动阶段把重复的 CRUD 样板铺完,然后你在骨架上改。要注意两点:生成的代码风格不一定符合你团队的规范,字段类型映射也需要人工校对,尤其是 decimal、datetime、tinyint 这几个。把它当"起草工具"而不是"成品生成器"。
2.7 AceJump:不用鼠标把光标丢到屏幕任意位置
Ctrl + 分号 之后输入你想跳到的那个字符,屏幕上所有出现该字符的位置会被标上字母,再按对应字母,光标就飞过去了。在长文件里改一个远处的变量名,比用鼠标划过去准得多,也不打断敲键盘的节奏。
2.8 Save Actions:保存时顺手做格式化
配置好之后,每次 Ctrl+S 自动优化导入、按规则格式化代码、去掉多余的空行。听起来很美,但有个前提:团队必须是统一的格式化配置。如果只有你一个人开着自动格式化,你提交的 diff 里会混进大量与业务无关的空格换行改动,review 的人会很痛苦。所以我的用法是:个人项目全开,公司项目只留"优化 import"和"去掉行尾空格"这两项。
3. 五款把问题拦在提交之前的诊断插件
3.1 Alibaba Java Coding Guidelines:把规范翻译成人话
它扫描的是命名、并发、集合、OOP、异常处理这些层面的常见问题,每条告警都带中文解释和修改建议,比如"集合初始化时指定容量""避免用 Executors 创建线程池"。可以按文件实时扫描,也可以整个模块跑一遍。对刚接触 Java 工程规范的人来说,它比读几万字的规范文档有用得多。要注意它的规则偏向团队内部经验,个别条目在特殊场景下会误报,别不加思索地全改。
3.2 SonarLint:增量分析很好,全量分析会拖垮编辑器
SonarLint 的默认模式是随你编辑文件做增量检查,这个体验很好,几乎无感。但如果你在设置里勾上"分析整个项目"或者绑定了服务端规则做全量扫描,打开的瞬间 CPU 就会飙满。我的配置是:只保留当前文件的实时分析,全项目扫描交给流水线。绑定服务端规则的时候,连接信息填一次就够,规则同步上去之后本地只拉配置,不需要每次都连。
3.3 SpotBugs:专门揪编译期看不见的错误
它找的是字节码层面的问题:可能为 null 的返回值、没关闭的资源流、误用的 equals、有风险的字符串比较。这类问题编译器不会报,单元测试也未必覆盖得到。代价是速度慢,所以我从来不设成保存时运行,只在提交前对一个包手动跑一次,看新增了多少条。
3.4 CheckStyle-IDEA:把团队规范变成编辑器里的红线
它需要一份 checkstyle.xml,通常由团队统一维护。导入之后,不符合规范的地方会在编辑器里直接标出来,最实用的是 import 顺序、命名规范、行长度这几条可以配置成实时提示。配置时注意 checkstyle 版本和规则文件的对应关系,版本不匹配会直接报解析错误,这是新手最常卡住的地方。
3.5 Maven Helper:依赖冲突的可视化排查
打开 pom 文件,底部会多出一个 Dependency Analyzer 标签页,切到 Conflicts 视图,所有版本冲突会按坐标聚在一起,展开能看到完整依赖路径,右键 Exclude 直接把排除标签写进 pom。排查 NoSuchMethodError、ClassNotFoundException 这类"编译能过运行就炸"的问题时,这个是第一站。
| 插件 | 主要抓什么 | 建议触发方式 | 速度 |
|---|---|---|---|
| Alibaba 规约 | 命名、并发、集合用法 | 按文件实时 | 快 |
| SonarLint | 代码异味、潜在 bug | 增量实时 | 快 |
| SpotBugs | 字节码层缺陷 | 提交前手动全量 | 慢 |
| CheckStyle | 格式与命名规范 | 实时提示 | 快 |
4. 五款把"陌生代码"读薄的导航类插件
4.1 MyBatisX:Mapper 接口与 XML 之间的双向通道
装了它之后,Mapper 接口方法左边会出现一个蓝色小鸟图标,点一下直接跳到对应的 XML 语句;反过来在 XML 里点红色小鸟,能跳回接口方法。它还能根据方法名生成对应的 SQL 骨架,以及把 XML 里的 resultMap 和实体字段做对应提示。接手一个用 MyBatis 的老项目,这个插件的价值几乎是立竿见影的。要注意它对注解式 SQL 和多数据源场景的支持不如 XML 完整,遇到定位不到的情况别怀疑人生,是插件的能力边界。
4.2 RestfulToolkitX:用 URL 反查接口
Ctrl+Alt+N 输入一串 URL 片段,它会把匹配的接口方法列出来,点进去直接定位。测试同学发来一条报错日志带上路径,你不用在几十个 Controller 里翻,直接搜就完事。它同时提供一个独立的接口列表视图,按模块分组,接口盘点的时候很好用。
4.3 SequenceDiagram:从方法调用生成时序图
在方法名上右键,选 Sequence Diagram,它会顺着调用链生成一张时序图,能展开到指定深度。梳理一个复杂业务方法的调用链、给别人讲清楚一次请求经过了哪些层,这个比口头描述高效太多。但它对反射、动态调用、框架层面的拦截是无能为力的,生成的图只能当"主干参考",别当成绝对事实。
4.4 Grep Console:让日志自己说话
控制台默认所有日志是一个颜色,几千行滚过去,ERROR 藏在里面根本看不见。这个插件可以按日志级别上色,ERROR 标红加粗、WARN 标黄、DEBUG 灰显,还能配正则把不关心的行过滤掉。调试一个高频调用的接口时,我会临时加一条过滤规则只留 ERROR 和关键字,屏幕上瞬间干净。要注意日志输出量特别大的项目里,着色本身会带来额外开销,可以把更新频率调低一些。
4.5 jclasslib Bytecode Viewer:看清编译之后到底生成了什么
在类文件上打开视图,能看到常量池、方法表、指令列表。它解决的是"为什么代码这么写"的疑惑:泛型擦除之后类型参数变成了什么、lambda 被编译成了哪个合成方法、字符串拼接用的是 StringBuilder 还是 invokedynamic、内部类为什么会持有外部类引用。这些问题的答案在 IDE 的编辑视图里是看不到的,只能落到字节码层面。
5. 六款把 IDE 和外部工具链接上的插件
5.1 GitToolBox:把 blame 和分支状态放进编辑器
光标停在某一行,行尾会直接显示这一行最后一次是谁、什么时候改的,点开看提交信息。状态栏还会显示当前分支落后远端多少个提交。它的自动 fetch 功能建议把间隔设成 15 分钟以上,大仓库里如果设成一两分钟,后台会频繁拉取,磁盘和网络都会被占满。
5.2 .ignore:生成各类忽略文件模板
新建 .gitignore 的时候,它提供各种语言和工具的模板,勾一下就能把构建输出、IDE 配置、日志目录这些一次性写进去,同时带语法高亮和无效规则提示。.dockerignore、.npmignore 也一并支持,属于装了不用管、但每次新建项目都会感谢它的类型。
5.3 EnvFile:把环境变量文件注入运行配置
本地起服务的时候,数据库地址、密钥这类东西通常放在一个环境变量文件里。这个插件允许你在 Run Configuration 里指定文件路径,启动时自动把里面的键值对注入进程环境。好处是运行配置可以直接提交到仓库,每个人的本地密钥各管各的,不会因为配置文件互相覆盖而吵起来。
5.4 Docker:容器就在 IDE 里管
连接本地或远端的容器服务之后,可以直接查看容器列表、看日志、进容器执行命令、构建镜像、编辑构建文件。排查"服务起不来"的时候,直接在 IDE 里切到容器日志,比来回切终端顺手得多。连接远端环境记得在自己的配置里保存好访问信息,不要提交到仓库。
5.5 Translation:划词翻译和命名建议
选中一个英文单词或一整段注释就能翻译,还能反向把一个中文词翻译成合适的英文变量名候选。团队里如果经常有英文文档要看,这个能省不少切浏览器的动作。要注意默认的在线翻译通道在受限网络下可能不通,可以在设置里换成本地词典或换一个可用的服务地址。
5.6 WakaTime:统计你到底写了多少代码
它会记录你在各个项目上的编码时长,生成周报和图表。有个隐私点必须提前确认:它会上报项目名和文件名(不传代码内容),公司项目在用之前最好跟主管确认一遍是否允许。个人项目拿它看看自己一天到底专注了多久,还挺有意思。
6. AI 补全这块单独聊:为什么我只留了一个
6.1 补全型 AI 插件在实际业务代码里的真实表现
我在不同项目里试过好几个 AI 辅助插件,包括本地模型的和云端服务的。结论很一致:在算法题、正则、单测骨架、配置模板这类"有明确套路"的场景里,补全质量相当高;在业务代码里,尤其是充满领域概念的方法名和分层结构里,它给出的多行建议往往一半要删。更麻烦的是它的响应延迟,如果本地编辑器要等远端返回才渲染下一行,打字节奏会被打断,这种断续感比补全本身好不好用更影响体验。
6.2 我的用法:把它当第二双眼睛,而不是第一只手
现在我基本不让它抢在我前面写业务逻辑,只在一个固定流程里用它:选中一段别人写的复杂方法,让它用中文解释这段在干什么;写完一个接口之后,让它生成单元测试的骨架和边界用例;写正则、写复杂的 SQL 时让它先出一版再改。这几件事上它的投入产出比最高,也不会打乱我的编码节奏。建议是只保留一个,关掉其余同类插件,多个补全插件同时挂载会互相抢触发时机,结果是每个都不准。
7. 安装、冲突排查与性能收尾
7.1 插件市场连不上时的离线安装办法
公司内网或者受限网络下,插件市场页面经常刷不出来。这时候的办法是去找插件的离线包:在插件详情页找到版本列表,下载与你 IDE 版本匹配的压缩包,然后在 Settings -> Plugins 右上角齿轮里选 Install Plugin from Disk,指定本地文件安装。重点是版本对应,插件页面会标注兼容的 IDE 构建号范围,装错版本要么直接拒绝加载,要么装上后一启动就抛异常。装完重启一次,确认插件列表里没有报错提示。
7.2 IDE 变卡之后,我是这样一步步揪出元凶的
先别急着卸载,按照下面的顺序走,基本十分钟内能定位:
- 先复现。明确是"启动慢"还是"编辑卡"还是"滚动卡",三种现象指向的插件类型完全不同。启动慢多半是索引贡献者多,编辑卡多半是实时分析插件,滚动卡多半是编辑器绘制层的插件。
- 进 Settings -> Plugins,用齿轮里的禁用全部第三方插件功能,把下载的插件一次性关掉,重启。如果卡顿消失,问题就在第三方插件里。
- 二分法开启。一次开一半,重启,复现。用三四轮就能把范围缩到个位数。
- 打开 Help -> Show Log in Explorer,看 idea.log。搜插件加载耗时相关的记录,也看有没有反复抛出的异常堆栈。很多时候某个插件在后台每几秒报一次异常,日志里全是它。
- 定位到之后先别急着卸载。多数插件的性能问题都来自默认配置过激,比如自动刷新间隔太短、全项目扫描开着、实时检查范围过大。把配置调温和一点,往往就能留下它。
| 现象 | 优先怀疑的插件类型 | 第一手处理办法 |
|---|---|---|
| 启动明显变慢 | 索引贡献类、代码统计类 | 关闭全量扫描,改按需触发 |
| 打字有延迟 | 实时静态检查、AI 补全 | 缩小检查范围,只留一个 AI 插件 |
| 滚动卡顿 | 日志高亮、行内 blame | 调低刷新频率或改手动刷新 |
| 内存持续增长 | 缓存不释放的插件 | 直接卸载换替代方案 |
7.3 我现在的插件清单
把上面二十四款按场景整理成一张表,方便你按需勾选。我个人的组合是效率类全留,检查类只留两个手动触发,导航类全留,工具链类按项目类型加减。
| 序号 | 插件 | 类别 | 我留它的理由 |
|---|---|---|---|
| 1 | Lombok | 编码效率 | 实体类回归可读 |
| 2 | Key Promoter X | 编码效率 | 长期改掉鼠标依赖 |
| 3 | GenerateAllSetter | 编码效率 | 省掉样板 setter |
| 4 | String Manipulation | 编码效率 | 字符串批量处理 |
| 5 | CamelCase | 编码效率 | 命名格式秒切 |
| 6 | EasyCode | 编码效率 | 冷启动铺骨架 |
| 7 | AceJump | 编码效率 | 不碰鼠标跳光标 |
| 8 | Save Actions | 编码效率 | 保存即整理 |
| 9 | Alibaba 规约 | 代码诊断 | 中文解释的规范提醒 |
| 10 | SonarLint | 代码诊断 | 增量体检 |
| 11 | SpotBugs | 代码诊断 | 字节码层缺陷 |
| 12 | CheckStyle-IDEA | 代码诊断 | 团队规范落地 |
| 13 | Maven Helper | 代码诊断 | 依赖冲突可视化 |
| 14 | MyBatisX | 代码导航 | 接口与 XML 互跳 |
| 15 | RestfulToolkitX | 代码导航 | URL 反查接口 |
| 16 | SequenceDiagram | 代码导航 | 调用链可视化 |
| 17 | Grep Console | 代码导航 | 日志分级上色 |
| 18 | jclasslib | 代码导航 | 看清字节码 |
| 19 | GitToolBox | 工具链 | 行内 blame |
| 20 | .ignore | 工具链 | 忽略文件模板 |
| 21 | EnvFile | 工具链 | 环境变量注入 |
| 22 | Docker | 工具链 | 容器在 IDE 里管 |
| 23 | Translation | 工具链 | 划词翻译 |
| 24 | WakaTime | 工具链 | 编码时长统计 |
我自己的习惯是每半年清一次插件列表。技术上没什么标准答案,每隔一段时间回头看,总会有两三个插件其实这半年一次都没点开过,把它们卸掉的那一刻,IDE 启动会明显轻快一点。另外提醒一句,装插件前先看一眼最近更新日期,两年没更新的插件在新版 IDE 上出问题的概率会陡增,我曾经因为一个长期不维护的主题插件,排查了半天才找到启动报错的来源。