玩 IDEA 的老哥应该都有这种体会:写 Java 后端,每天大半时间泡在 IntelliJ IDEA 里,代码写多了,反而开始研究怎么让工具自己多干点活。今天就推荐四款我用了很久、实测下来最稳、也最舍不得删掉的 IDEA 插件。每一款都会说清楚它解决什么痛点、怎么配置、有什么坑,尽量让你看完就能直接上手用。
这四款插件覆盖了日常开发里最烦的四个环节:写实体类时的样板代码、写完后没人看的代码质量、提交 git 前的格式混乱,以及复制粘贴时要做的各种字符串转换。我选插件的标准也很简单:不整花活,只选那些能让我少加班、少跟同事扯皮、少在 commit 里翻垃圾 diff 的。
1. 这四款插件怎么选的:先看选型思路,再看推荐清单
很多人装插件是看社区推荐什么就装什么,今天装个主题美化,明天装个翻译工具,装完之后 IDEA 启动越来越慢,真正解决问题的一个没有。我这个人的习惯比较务实,先想清楚自己在写代码时到底被什么绊住过,再去挑工具。
1.1 写业务代码最烦的是什么
先说说日常写代码时最容易让程序员抓狂的几个场景。
第一个是实体类。一个普通的 User 类,字段还没写几个,getter、setter、toString、equals、hashCode 先占掉几十行。这玩意儿要是手写,手速再快人也烦;不写,后面 JSON 序列化、日志打印、对象比较全是坑。这类代码就像入职第一天让你填十张信息登记表,每张表都长得差不多,但又不得不填。
第二个是代码质量问题。本地跑得好好的,推上去流水线一跑,SonarQube 扫出来一堆 Critical:有空指针风险、资源没关闭、字符串硬编码。等到集成阶段再返工,成本比在编辑器里直接发现高太多了。
第三个是格式问题。团队里十个人有十种格式化习惯,有人喜欢在保存前手动 Ctrl+Alt+L,有人忘了格式化就直接提交。最后 git 上全是格式噪音,review 的人一眼看过去根本分不清哪些是真实改动。
第四个是字符串处理的杂活。在 Chrome 里复制了一段 JSON,要粘贴到 Java 代码里当字符串常量;从数据库复制了一个字段名 user_name,要在代码里写成 userName;想临时把一段文本转成 URL 编码给接口测试用。这些活儿不大,但一天来几次,非常消耗耐心。
说到底,这几个痛点都是高频、低技术含量、但又不得不做的事。解决它们不需要学什么新框架,装对工具就够了。
1.2 我的筛选标准
我选择插件的标准是三条:第一,必须解决真实痛点,而不是靠新鲜感吸引人;第二,学习成本必须低,装上就能用,不需要读一长篇文档;第三,稳定性要过关,不能在大项目里一跑就卡死或者跟别的插件打架。
按这三个标准选下来,最后留在列表里的就是下面这四款,涉及的场景分别是写样板代码、查质量问题、统一格式、处理字符串杂活:
| 插件 | 解决的痛点 | 上手成本 | 个人推荐度 |
|---|---|---|---|
| Lombok | 实体类样板代码过多 | 很低,注解即用 | 必备级 |
| SonarLint | 代码质量问题和潜在 Bug | 中等,需要看规则 | 强烈推荐 |
| Save Actions | 保存时自动格式化 | 极低,勾选即用 | 强烈推荐 |
| String Manipulation | 字符串转换与处理 | 低,快捷键调出 | 提升幸福感 |
下面一个一个拆开讲,包括原理、配置、实操、以及我踩过的坑。
2. 第一款:Lombok——把样板代码从实体类里清走
Lombok 在 Java 圈子里基本是标配了,但用的人多不代表所有人都用得明白。很多人只是跟着网上的教程加了个 @Data,结果遇到 @Builder 默认值失效、JDK 版本升级后编译报错,就直接开骂“垃圾插件”。实际上大部分坑都是配置不对或者注解用错了。
2.1 Lombok 到底做了什么
Lombok 的底层原理是 Java 的注解处理器。它在编译阶段介入 javac 的抽象语法树,动态生成 getter、setter、构造器、builder 等方法,然后再编译成字节码。这相当于在项目里请了个“代填表格”的小工,你只需要写字段,剩下重复的模板代码编译期自动补全。
先看没有 Lombok 的样子:
public class User { private Long id; private String name; public User() { } public User(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } // ...toString、equals、hashCode 再写几十行 }再看用了 Lombok 之后的同一个类:
@Data @NoArgsConstructor @AllArgsConstructor public class User { private Long id; private String name; }代码缩了大概百分之八十。而且注意,生成的 toString、equals、hashCode 是跟着字段走的,以后实体类加了新字段,重新编译自动同步,永远不用担心忘了改导致的诡异问题。
2.2 安装和 Maven 配置要一起做
很多人只知道在 IDEA 的 Plugins 市场里搜 Lombok、装上重启,却忘了改 pom.xml。结果同事拉代码一编译,直接报“程序包 lombok 不存在”。这是新手最常犯的错误,也是新员工入职第一天最常问的问题。
安装要分两步走。第一步,IDEA 里装插件:
- 打开 Settings -> Plugins,切到 Marketplace。
- 输入 Lombok,看到官方那个图标点 Install。
- 重启 IDEA 让插件生效。
第二步,项目里加依赖。如果用的是 Maven:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency>这里用 provided 是因为 Lombok 只在编译期需要,最终运行的 class 文件里已经包含生成好的方法了,不需要把它的 jar 包打进生产环境。
如果你用的是 JDK 9 以上的模块化项目,或者用 Spring Boot 3.x 这类对编译期要求比较严格的项目,建议再补一段 annotationProcessorPaths,把 Lombok 显式声明给编译插件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </path> </annotationProcessorPaths> </configuration> </plugin>这段配置的意义是告诉 Maven 编译器,处理注解的时候走哪条处理器路径。不加这段,在一些模块化项目里会出现 IDEA 里跑得好好的,命令行 mvn clean package 却报错的情况。
2.3 真正值得用的几个注解
@Data 是最常用的,但 Lombok 的核心能力远不止一个 @Data。我实际项目里使用频率最高的注解就这么几个,可以一张表说清楚:
| 注解 | 作用 | 典型使用场景 |
|---|---|---|
| @Data | 组合注解,生成 getter/setter/toString/equals/hashCode | 实体类、DTO |
| @Builder | 生成建造者模式 | 复杂对象创建 |
| @NoArgsConstructor / @AllArgsConstructor | 生成无参/全参构造器 | 配合 @Data 使用 |
| @RequiredArgsConstructor | 生成包含 final 字段的构造器 | Spring 构造器注入 |
| @Slf4j | 直接注入 log 字段 | 类里用 log.info 打日志 |
| @Builder.Default | 给 Builder 模式指定默认值 | 解决默认值丢失问题 |
我最想单独说说 @Slf4j。没有它的时候,每个类里都要写一行:
private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class);有了 @Slf4j,类上面加一行注解,直接用 log.info 就行。看着省得不多,但每个类都省这一行,项目里少了几百行重复代码,而且再也不用担心类名复制错了导致日志来源对不上。
2.4 踩过的坑和注意点
Lombok 虽然好用,但有几个坑我都是踩过之后才长记性的。
第一个就是 @Builder 默认值失效。直接给字段赋初始值,用 @Builder 创建对象时初始值会被丢掉:
@Data @Builder public class Config { private int timeout = 3000; // 这个默认值不会生效 }正确做法是加 @Builder.Default:
@Data @Builder public class Config { @Builder.Default private int timeout = 3000; }第二个坑是 @Data 放在有继承关系的类上时,equals 和 hashCode 不会把父类字段算进去。如果父子类混用,比较对象时可能出现子类字段相同但父类字段不同,结果 equals 返回 true 的情况。遇到继承实体,要么手写 equals/hashCode,要么把 @Data 拆成 @Getter/@Setter 单独用。
第三个坑是 JDK 版本升级。Lombok 的注解处理器跟编译器的 AST 耦合很深,JDK 大版本一升级,旧版 Lombok 非常容易翻车。实测 JDK 17 开始有些版本就必须用 1.18.20 以上;到了 JDK 21,强烈建议直接上 1.18.28 之后的版本。每次升级 JDK,顺手把 Lombok 版本也升一下,能省很多排查时间。
注意:Lombok 还容易和 MapStruct、QueryDSL 这类同样使用注解处理器的框架打架。如果项目同时用了这些,maven-compiler-plugin 的 annotationProcessorPaths 一定要把 Lombok 和对应框架的处理器都列上,并且顺序要稳定,否则经常会出现“编译期类生成一半”的玄学问题。
我个人的习惯是:Lombok 用在实体、DTO、VO 上没问题,但不要在复杂的领域模型上滥用链式 setter,也不要为了“少写几行”把 @Data 无脑丢在每一个类上。它的价值是减少重复,而不是掩盖设计问题。
3. 第二款:SonarLint——在写代码的时候就把问题掐死在编辑器里
第二款是后知后觉才爱上的一款。以前我总觉得“代码质量扫描是 CI 干的事”,本地写得爽就行,流水线挂了再改。后来在一个老项目里被连续两个 Critical 问题告警折腾了几次,才发现如果本地编辑器里就能看到这些问题,修起来成本要低一个数量级。
3.1 实时检查的逻辑
SonarLint 本质上是一个把静态代码分析规则跑在本地编辑器里的插件。它会持续扫描当前文件,把规则引擎发现的异常、坏味道、潜在漏洞直接标注在代码行上,类似拼写检查对文本的作用。
它检测的问题分几类:
- 可能的空指针、越界等运行异常隐患
- 资源没有关闭、连接没有释放
- 未使用变量、冗余表达式等坏味道
- 硬编码密码、SQL 字符串拼接等安全问题
- 圈复杂度超标等可维护性问题
举个例子,这种代码写下去,SonarLint 会直接在当前行标红:
public String getUserName(Map<String, Object> param) { Object name = param.get("name"); return name.toString(); // 这里可能 NPE:map.get 返回 null }以前这种问题要等到代码 review 或者流水线扫描才能暴露出来,现在写代码的瞬间编辑器就提示了,顺手就能改成安全写法:
public String getUserName(Map<String, Object> param) { Object name = param.get("name"); return name == null ? null : name.toString(); }别小看这一步。上百个文件的项目,每个文件少一个隐患,版本发布前要处理的告警数量完全不是一个量级。
3.2 我最常用的几个检查项
SonarLint 默认规则集比较全,但没必要全开。我把其中最值得关注、命中率最高的规则整理如下:
| 规则分类 | 典型提示 | 实际意义 |
|---|---|---|
| 空指针风险 | “NullPointerException might be thrown” | 最常见的线上事故来源 |
| 资源未关闭 | “Close this InputStream” | 连接泄漏,高并发下会拖垮服务 |
| 未使用变量 | “Remove this unused variable” | 代码整洁度 |
| SQL 拼接 | “Use a variable binding mechanism” | 防注入,安全底线 |
| 硬编码 | “A password hardcoded” | 敏感信息泄露风险 |
| 复杂度 | “Split this class into smaller” | 可维护性信号 |
这里解释一下,SonarLint 的规则等级通常分 Critical、Major、Minor。在实际开发中,我给自己定的规矩是:Critical 必改,Major 尽量改,Minor 可以留到有空一起处理。不要追求满屏绿色零告警,代码是人写的,不是机器写的,留少量合理告警完全正常。
3.3 配置与使用技巧
SonarLint 默认会随着你打开文件自动分析,不需要手动触发。但对于改动比较多的文件,我习惯在提交前手动跑一次完整的 Scan:
- 打开目标文件。
- 右键 -> 选择 SonarLint -> Analyze Current File。
- 查看报告,分类处理。
如果项目有 SonarQube 服务器或者 SonarCloud,可以在 Settings -> SonarLint 里绑定项目,这样本地扫描规则和 CI 完全一致。没有服务器也不影响使用,SonarLint 内置的默认规则集在本地就能独立工作。
还有一个实用技巧:层级筛选。SonarLint 的问题面板支持按文件、按规则、按严重程度过滤。在提交代码之前,我一般只看“Changed files”这一个视图,确保我这次改动引入的新问题都清干净了,而不是被历史遗留的几千条告警淹没了。
3.4 容易误报和需要忽略的情况
SonarLint 不是万能的,它的很多规则算的是“概率性风险”,所以误报并不少见。比如对动态 SQL 拼接的告警,如果你的项目里已经统一用 MyBatis 的 或者参数化查询,就可以放心忽略。再比如对Optional.get()的告警,如果你的业务逻辑里已经保证了isPresent()判断,也不必过于纠结。
另外,大项目里全量扫描会有点慢,我建议日常只对改动过的文件做分析,别动不动就右键“Analyze All Project Files”。这不是插件不稳定,而是静态分析本质上是算力活,文件越多耗时越长。
SonarLint 的定位应该是“提醒器”,不是“审核员”。它帮你把最低级的错误挡在编译前,但真正的代码 review 和架构设计,它替代不了。
4. 第三款:Save Actions——保存即格式化,团队代码风格不再靠自觉
第三款插件解决的是团队协作里最容易被忽视、也最容易引发争执的问题:代码格式不统一。你可能已经习惯了提交代码前手动按一下 Ctrl+Alt+L 格式化,但团队里不是每个人都有这个肌肉记忆。更常见的情况是,格式化快捷键和系统输入法快捷键冲突,开了个会回来忘了,就带着一坨乱格式提交了。
4.1 保存时自动格式化到底做了什么
Save Actions 的原理很简单:监听 IDEA 里的“保存文件”动作,在保存的瞬间自动触发一系列预设操作,比如 Reformat Code、Optimize Imports、Run File Cleanup。说白了,它把“保存”从“只写磁盘”变成了“写磁盘前做个全套整理”。
这里面有个关键设计:它是在后台自动执行的,不打断你的思路。你不需要停下来等格式化完成再继续写,只管写代码,保存的时候代码就已经被整理好了。
实际操作中,我建议配置这几个选项:
- Activate on save(保存时激活)——必开
- Reformat file(格式化文件)——必开
- Optimize imports(优化导入)——建议开
- 如果团队用 CheckStyle,再把 Run File Cleanup 打开
配置路径是 Settings -> Tools -> Save Actions,界面很直观,勾选即可。
这里补个背景:从 IDEA 2023.2 开始,官方其实已经内置了“保存时重新格式化”的选项,在 Settings -> Editor -> General -> Auto Import 和 Settings -> Tools -> Actions on Save 里。但 Save Actions 还是有一批老用户,因为它的清理能力更全面,还能配合运行特定的检查规则,比内置的格式化更彻底。
4.2 我的推荐配置清单
强烈不建议把 Save Actions 所有选项都打开。有些选项表面美好,实际副作用不小。我实测下来的推荐配置是这样:
| 选项 | 是否开启 | 原因 |
|---|---|---|
| Reformat file | 开启 | 核心功能,统一格式 |
| Optimize imports | 开启 | 清理无用 import,减少冲突 |
| Run File Cleanup | 按需 | 配合 CheckStyle 时开 |
| Remove unused imports | 开启 | 配合第二项 |
| Reformat only changed text | 不勾 | 会导致 diff 语义不完整,不如全文件格式化一致 |
有一个非常容易踩的坑是“自动导入所有包”。有些版本勾上这个选项后,你敲一个名字它就自动帮你 import,看似方便,但经常把两个同名类导入冲突,代码里直接冒出十几个红色的 Ambiguous method call。动不动弹窗要你选,还不如不自动。
4.3 启动后的效果
装上 Save Actions 之后,最直观的变化在 git diff 上。以前一段简单改动,diff 里可能混入 20 行格式调整,review 的人要花很大精力分辨哪些是逻辑变更。现在提交的每个文件都是格式化干净的、import 是排好序的,diff 里只剩真实改动。
团队成员之间也不用再互相提醒“你代码没格式化”“你 import 乱掉了”。这种问题的本质是防范机制缺失,而不是成员不自律。Save Actions 做的就是把这事变成自动流程,人靠不住,流程靠得住。
4.4 需要注意的问题
这个插件最容易“翻车”的场景是第一次装上扫全项目。如果你在一个历史老项目里安装它,保存任意一个文件时,插件会把整个文件按当前 IDEA 格式规则重新排一遍,diff 直接从几行变成几百行。我就见过同事因为这个被 git review 追着问“你到底改了啥”。
所以实操建议是:新项目直接装,老项目装之前先想清楚。启用后第一次提交前,先挑一个文件实测保存,看 diff 是否符合预期。公司有统一格式规范的话,先把 EditorConfig 配好,再开 Save Actions,效果最好。还有个细节,自动清理生成代码时尽量别勾,比如 target 目录、generated 目录里的文件,格式化成什么样都没意义,还容易干扰构建结果。
注意:格式化大文件很吃 CPU。超过 2000 行的文件,保存时你可能会感觉 IDEA 卡一下。遇到这种文件,建议手动在文件头加上
// @formatter:off,或者临时关闭插件的 Reformat 选项。
5. 第四款:String Manipulation——字符串处理小能手,省下大量复制粘贴
前几款都是项目级、团队级的工具,第四款更偏个人向,属于“用过就回不去”的小工具。写代码的时候少不了跟字符串打交道,尤其是从网页、接口工具、测试环境里复制各种文本,要转格式、转大小写、转编码,以前都是去在线工具网站折腾,有了 String Manipulation 就全部留在编辑器里处理了。
5.1 它的核心能力
String Manipulation 是一款集合了大量字符串操作功能的插件,核心功能包括:
- 大小写风格转换:camelCase、snake_case、PascalCase、kebab-case、CONSTANT_CASE
- 字符串反转、去重行、按行排序
- 转义与反转义:JSON 转义、Unicode 转义、HTML 转义
- URL encode/decode
- 直接格式化 JSON 字符串
- 批量拼接字符串并用逗号分隔
说得直白点,它的作用就是把“文本编辑”这件事在 IDEA 里做到极致。以前要打开浏览器找在线工具的活儿,现在在编辑器里选中文本,一个快捷键就搞定了。
5.2 三个最实用的日常场景
场景一:JSON 字符串转 Java 常量。你在浏览器里复制了一段 JSON,想把它写进 Java 代码里做测试模板。这段 JSON 有双引号,直接粘进去会变成无数个字符串拼接,手改双引号非常折磨。有了 String Manipulation,选中 JSON,选择 Escape -> Java,瞬间转成可直接粘贴的 Java 字符串。
场景二:数据库字段转实体属性。数据库列名是 user_name,实体里字段是 userName。手改也容易,但字段多了麻烦。选中 user_name,调出菜单选 To camelCase,立刻变成 userName。
场景三:接口测试时对 URL 参数做编码。一些签名参数需要先 URL encode,选中文本,选 URL encode,直接生成编码结果,不用再开在线工具。
5.3 怎么用、快捷键绑定
安装后默认入口在菜单 Edit -> String Manipulation,或者右键菜单里也能看到。但这样每次都要点两级菜单,效率不够。我建议安装后立刻绑定快捷键:
- Settings -> Keymap -> 搜索 String Manipulation。
- 找到主菜单项,右键 Assign a shortcut。
- 我习惯设成 Alt+M,不跟系统快捷键冲突,也能单手盲按。
之后的操作流程就固定了:选中文本,Alt+M,弹出操作菜单,在里面选需要的功能。整个过程两三秒,完全不打断写代码的节奏。
5.4 避坑和经验
String Manipulation 看起来很轻量,用的时候也有几个注意点。
第一,格式化很长的 JSON 字符串时别选全文。曾经在一个十几 KB 的 JSON 上直接调格式化,IDEA 卡了好几秒。针对这种场景,建议把内容拆成小段处理,或者用编辑器自带的 JSON 格式化。第二,Unicode 转义功能处理中文字符时要注意编码。转出来是\uXXXX,但有些环境限定 UTF-8,格式一致才能正常还原。第三,这个插件更适合做临时处理,不适合做批量代码替换。真需要批量重构,建议用 IDEA 自带的 Structural Search 或者全局替换,更安全可控。
6. 新装好 IDEA 后的插件安装与配置实操
聊完这四款插件各自的能力,再集中说说安装和管理的实操。很多人装插件就是 Marketplace 一把梭,但真实工作环境里,有离线安装需求、有团队统一配置需求,还有装完不生效的排查需求,这些都要了解。
6.1 三种安装方式
第一种是最常用的在线安装。Settings -> Plugins -> Marketplace,搜插件名,点 Install,重启即可。适合个人开发和网络顺畅的场景。
第二种是离线安装。公司内网或者网络受限时,需要先在其他机器上或者插件官网下载对应的安装包,一般是 zip 或 jar。IDEA 里点 Settings -> Plugins -> 齿轮图标 -> Install Plugin from Disk,选择本地文件完成安装。注意版本要跟当前 IDEA 版本匹配,否则会出现安装成功但插件 disable 的情况。
第三种是企业统一分发。有的公司内部网络完全隔离,没法挨个去官网下载,常见做法是做一个内部插件市场,或者把插件安装包放在共享目录,新员工入职时统一拷贝。IDEA 支持通过自定义插件仓库地址接入内部源,适合有一定规模的技术团队。
6.2 团队插件怎么统一管理
插件配置的分发也是个麻烦事。我自己就吃过亏:开发环境一切正常,换台电脑后,插件是装上了,但 Save Actions 的配置、SonarLint 的项目绑定全丢了,还得重新配一遍。
推荐两个解法。一是 IDEA 自带 Settings Repository,把配置同步到 Git 仓库,一台机器提交,其他机器同步。二是把 .idea 目录和关键配置文件纳入团队规范,配合 EditorConfig 统一代码风格。这比让每个人手动调一遍高效得多,新同事入职当天基本就能把环境全部搞定。
6.3 装了不生效怎么办
插件装上但没生效,多数情况不是插件本身坏了,而是 IDEA 的缓存机制没反应过来。我的排查顺序是:
- 先重启 IDEA。不少插件在安装时会提示“Restart IDE”,这一步不能省。
- 还是不行,File -> Invalidate Caches -> Invalidate and Restart。IDEA 的索引和缓存会重新构建,插件配置也会重新加载。
- 重启后仍找不到菜单,检查一下插件是否被禁用。Settings -> Plugins -> Installed,看对应插件有没有被勾选或者显示 Disabled。
还有一个非常容易忽略的点:IDEA 分 Ultimate、Community 等版本,个别插件对版本有要求。比如一些前端、数据库插件在社区版上功能受限。上面推荐的四款插件,在社区版上基本都能正常工作,这一点不用太担心。
7. 常见问题与排查技巧实录
写到这里,把这几款插件在实际使用里最常遇到的几个问题整理成一个速查表,遇到对号入座就行。
| 问题 | 现象 | 原因 | 解法 |
|---|---|---|---|
| Lombok 编译报错 “程序包lombok不存在” | mvn 编译失败,IDEA 里却正常 | pom 里漏了依赖,或 annotationProcessorPaths 缺失 | 按 2.2 节配置依赖 |
| Lombok 装了但 getter/setter 不显示 | 代码里方法照样能用,但不显示 | IDE 索引未更新 | Invalidate Caches 重启 |
| Save Actions 格式化老项目整个 diff 全乱 | 保存一个文件,git diff 几百行 | 历史代码格式没统一 | 先配 EditorConfig,再逐个文件启用 |
| SonarLint 红色告警太多 | 打开一个文件满屏红标 | 全量规则全都生效 | 只关注 Critical/Major,配置 Only changed files |
| 插件市场搜不到某款插件 | 搜索无结果 | 网络或地区镜像问题 | 尝试插件的官网直接下载 zip 离线安装 |
| 安装后右侧菜单没有对应功能 | 右键看不到 String Manipulation | 没绑定快捷键或菜单层级 | 参考 5.3 绑定快捷键,或到 Edit 菜单找入口 |
再补充几条排查思路。
遇到“插件装了但找不到”的情况,先看底部状态栏有没有报错,再找 idea.log 日志。日志通常放在:
- Windows:
%USERPROFILE%\AppData\Roaming\JetBrains\IntelliJIdea2024.3\log\idea.log - macOS:
~/Library/Logs/JetBrains/IntelliJIdea2024.3/idea.log
打开日志搜索插件名,能看到具体的加载失败原因,多数是版本不兼容或者缺少依赖项。这个排查思路适用于所有 IDEA 插件。
另外,插件也不是装得越多越好。机器上是能装,但每次启动时插件都要加载,装了十几个冷门插件,IDEA 启动时间肉眼可见地变长。我个人的经验是,每装一个新插件之前,问自己一个问题:这个插件能不能让我一周之内至少省下 30 分钟?不能省就卸。能省的,值得花时间配置好。
还有一个小技巧,安装完所有插件后,建议通过 File -> Manage IDE Settings -> Export Settings 导出一份配置备份。换电脑或者重装系统时,一键导入,所有插件的快捷键、配置、主题全部恢复,省下半天时间。我自己就是重装了两三次系统之后才养成的这个习惯,非常值得养成。
这四款插件我到现在都留着,不是它们功能多花哨,而是它们各自解决了一个真问题:Lombok 帮我少写样板代码,SonarLint 帮我提前发现隐患,Save Actions 帮团队省去格式化的扯皮,String Manipulation 帮我省掉各种字符串杂活。都是“润物细无声”型的工具。如果你还没体验过其中某个,可以挑一款装上试试,坚持用两周,看自己还离不离得开它。