☰
IntelliJ IDEA 两版常用配置、插件与避坑指南
2026/10/31 2:22:10 网站建设 项目流程

简介:面向使用 IntelliJ IDEA 从事 Java 开发的学习者与工程人员,这份文档针对 2020.1.4 和 2022.2 两个版本梳理常用配置,着力解决插件挑选、编码字体、自动导包编译、热部署、快捷键和配置迁移等效率问题。压缩包内只有 1 个 docx 文件,大小约 1.02MB,内容集中,条目按配置主题组织,适合按需查阅并长期留存。正文列明主题皮肤、Git 工具、Maven 依赖树、代码规范、日志格式化、括号高亮、接口定位及 XML 与 DAO 跳转等插件的用途,也覆盖文件编码、空格显示、换行符、隐藏配置文件、显示内存、自定义缩写、列模式编辑、导入导出设置及常见警告处理等实操条目,能帮助读者减少重复配置、统一开发环境。已有 480 人学习,适合希望补齐 IDEA 使用细节、提升日常开发效率的读者参考。

1. 版本选型这件事,比想象中更容易出问题

上个月帮一个小组统一开发环境,六个人装了六个不同版本的 IDEA,结果同一份代码提交上去,git diff 里一半是空白改动——有人用 CRLF、有人 Tab 缩进、有人默认 GBK。问题不在代码,全在 IDEA 装完之后没人认真配置。IDEA 常用配置这件事听着琐碎,却是每个人换机器、进新项目都要重来一遍的固定动作。这里记录的是 IntelliJ IDEA 2020.1.4 和 2022.2 两个版本都实际验证过的一整套配置:装哪个包、装哪十二个插件、十七项设置怎么改、坏了怎么救。写这两版是因为它们代表了两代菜单结构,2020.1.4 的路径在 2022.2 上不少已经挪了位置,照旧教程点会找不到入口。刚上手 Java 的、从 Eclipse 迁过来的、要给团队做统一环境模板的,都可以照着走。

2. 安装与插件装配:先装对包,再按四组装插件

安装本身没有任何技术含量,需要注意的地方都在选择上。真正让环境变得好用,是从插件开始的,但这也是最容易出问题的一步:一次装十几个插件,启动变慢、菜单冲突、某个插件版本不兼容导致整个 IDE 卡死,排查起来都不知道从哪个开始。我的做法是分组装、分组验证,每装完一组就重启一次,确认能正常启动再装下一组。

2.1 Community 还是 Ultimate,以及安装时的两个选项

官方下载页提供两个版本。Community 版免费,够用来写 Java SE、看源码、跑 Maven 工程;Ultimate 版额外带 Web 前端、数据库工具、Spring 相关支持。区别不在“能不能用 IDEA”,而在于你的项目有没有用到企业级框架的深度集成。

判断标准很简单:工程里如果有 Spring Boot、MyBatis、前端框架这类东西,而且你希望有专门的配置文件跳转、Bean 依赖图、SQL 语句补全,那就上 Ultimate;如果只是刷题、写工具类、看开源项目源码,Community 完全够用,而且启动更快、占内存更少。

安装向导里有两个选项值得留意。一是“Create Desktop Shortcut”,按 64 位系统勾选即可;二是关联文件类型,.java、.xml、.properties建议都关联上,以后双击直接进 IDEA,省得每次先开 IDE 再找文件。

安装路径上有一个容易被忽略的问题:别装在带中文或空格的目录下。这不是 IDEA 独有的毛病,但脚本执行、插件解压、某些命令行工具调用都会在这里出问题,等到报错时找原因很费时间。路径里保持纯英文,装在非系统盘也行,重装系统时不会连配置一起丢。

装完之后第一次启动,会问要不要导入旧配置。如果是换机器,先选“不导入”,把新环境配干净,最后再从旧机器的导出包做一次合并,这样能避免旧版本里那些已经废弃的选项跟着过来。

2.2 十二个插件按四组装,别一次装完

插件市场里搜名字直接装,装完重启。整套装下来大概十分钟,但顺序有讲究。十二个插件按用途分成四组:

分组插件名作用
外观vuesion theme界面皮肤,换掉默认灰白配色
外观CodeGlance编辑器右侧显示代码缩略图,长文件快速定位
外观Rainbow Brackets彩虹括号,嵌套层级一眼分清
版本控制GitToolbox增强 Git 工具,分支、提交信息直接显示在行尾
构建Maven Helper依赖树可视化,冲突的 jar 用红色标出
构建Search in Repository直接按类名查 Maven 坐标,不用开浏览器
日志Grep Console控制台按日志级别上色,ERROR 一眼看到
日志MyBatis 日志格式化把 MyBatis 打印的带问号 SQL 拼成完整可执行语句
编码Lombok让 getter/setter、构造器这些注解在 IDE 里真正生效
编码Alibaba Java Coding Guidelines阿里巴巴代码规范检查,实时提示不合规写法
WebRestfulToolkit按 URL 反查 Controller 类,Ctrl+Alt+N 唤出
WebMyBatis XML/DAO 互跳XML 里的语句和 DAO 接口之间一键跳转

第一组装外观三个。这三个的风险最低,装完重启,确认主题生效、右侧出现缩略条、括号变色,就说明插件加载链路没问题。

第二组装构建和版本控制三个。Maven Helper 装完后,打开任意pom.xml,编辑器底部会多一个 “Dependency Analyzer” 标签,点进去能看到依赖树。这里有个前提:工程必须已经被 IDEA 识别成 Maven 工程,如果是导入的普通目录,先右键pom.xml选 “Add as Maven Project”,否则标签不出现。Search in Repository 需要联网查询中央仓库和已配置的镜像,如果公司内网访问受限,这个插件会一直转圈,那就别装。

第三组装日志和编码四个。Lombok 需要额外打开注解处理,否则装完照样一片红:

Settings → Build, Execution, Deployment → Compiler → Annotation Processors 勾选 Enable annotation processing

这一步漏掉的人特别多,现象是插件明明装了,@Data标在类上还是提示找不到 getter。Alibaba 规范插件装完不会自动扫描全项目,需要手动触发:右键项目 → “编码规约扫描”,结果按 Blocker/Critical/Major 分级列出,第一次扫出来几百条很正常,先看 Blocker 那几条。

第四组装 Web 两个。RestfulToolkit 的目的是省掉“从 URL 找接口”的时间,唤出后输入/api/user/list这样的路径,直接列出匹配的 Controller 方法。MyBatis 互跳插件在 XML 的<select id="xxx">上按住 Ctrl 点击能跳到 DAO 方法,反过来也行,没有它只能靠全局搜索方法名。

2.3 插件装不上或者装完起不来,怎么办

插件市场打不开、下载卡在 0%、装完重启直接白屏,这三种情况我都遇到过。

下载卡住一般是网络到插件仓库的连接问题。常见做法是先关掉 IDEA,去插件市场网页版下载对应版本的.jar或.zip,然后Settings → Plugins → 齿轮图标 → Install Plugin from Disk手动选包。注意插件页面上有 “Compatibility” 一栏,会写支持哪些 IDEA 版本区间,2020.1.4 和 2022.2 差了两个大版本,很多插件是分开发布的,下错版本装上去不报错但功能不出现。

装完起不来,也就是白屏或卡在启动画面,处理办法是进安全模式。命令行执行:

# 禁用所有第三方插件启动,用来定位是不是插件导致的问题 idea.exe --safe-mode # macOS / Linux idea --safe-mode

能起来就说明是某个插件的问题,回到Settings → Plugins按安装时间倒序一个个禁用,重启验证。这个流程比较笨,但比反复重装 IDE 快得多。

还有一种情况是插件之间打架。比如同时装了多个主题插件,编辑器颜色会互相覆盖,表现为部分区域文字和背景同色,看着像代码丢了。这类问题不会报错,只能靠“装一组验一组”的方式提前发现,所以前面才强调分组装配。

3. 基础设置落地:编码、缩进、换行符一次配到位

十七项设置里,真正影响团队协作的其实只有前四项:编码、缩进、换行符、自动导包。剩下的多是个人偏好,配不配都能干活。这一章把有硬性对错的部分挑出来讲清楚,把纯偏好的部分快速过一遍。

3.1 File Encodings 三处必须对齐

路径是Settings → Editor → File Encodings,2020.1.4 和 2022.2 位置一致,这一项没变过。页面里有三个下拉框:

  • Global Encoding:全局默认编码
  • Project Encoding:当前工程编码
  • Default encoding for properties files:.properties文件专用编码
  • 下方还有一个 “Transparent native-to-ascii conversion” 复选框

三处全部选 UTF-8。第三项要单独说,.properties文件在老项目里经常是 ISO-8859-1,如果不改,中文配置项在 IDE 里显示成\uXXXX转义。勾上 “Transparent native-to-ascii conversion” 之后,IDE 会在保存时自动转义,你看到的是中文,文件里存的是转义序列,两边都不出错。

改完这一项,已有的文件不会自动转换。如果工程里混着 GBK 的文件,打开还是乱码,需要单独处理:右下角状态栏点编码名 → “Reload in another encoding” 试 GBK,能正常显示就说明源文件是 GBK,再选 “Convert” 转成 UTF-8 并保存。

比 IDE 设置更可靠的做法是在项目根目录放一个.editorconfig,让编码、缩进、换行符跟着仓库走,谁 clone 下来都一样:

root = true [*] charset = utf-8 end_of_line = lf insert_final_newline = true indent_style = space indent_size = 4 trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false [*.{yml,yaml}] indent_size = 2

root = true表示到这里为止不再向上查找父目录的配置。end_of_line = lf统一换行符,解决前面说的 diff 满屏空白问题。indent_size = 4配indent_style = space就是四空格缩进。trim_trailing_whitespace去掉行尾多余空格,这项在多人协作里能消掉大量无意义的 diff。Markdown 文件关掉行尾空格清理,因为两个空格在 Markdown 里是换行语义。

IDEA 原生支持这个文件,不需要装插件,改完即时生效。这是我认为性价比最高的一项配置,比在每个人的 IDE 里点十七次设置靠谱得多。

3.2 缩进、空格显示与换行符

Settings → Editor → Code Style → Java里,Tab size 和 Indent 都设 4,Use tab character 不勾选。然后在Settings → Editor → General → Appearance里勾上 “Show whitespaces”,代码里的空格会显示成小灰点、Tab 显示成箭头。刚开的时候会觉得满屏麻点,看两天就习惯了,好处是缩进错乱、行尾多余空格这类问题肉眼可见。

换行符在右下角状态栏能看到,显示CRLF就说明是 Windows 格式。改成 LF 的方式是点那个位置 → 选LF→ 弹出 “Convert” 确认。新项目建议在Settings → Editor → Code Style的 Line separator 里直接设成Unix and macOS (\n),新建文件默认就是 LF。

这里有个容易误解的地方:换行符设置只管新建文件,已有文件要单独转换。批量转的话,选中项目根目录 →File → File Properties → Line Separators→ 选LF,一次处理整个工程。

3.3 代码提示大小写与自动导包

Settings → Editor → General → Code Completion,把 “Match case” 取消勾选。默认是勾上的,意思是输入str不会提示StringUtils,取消之后大小写不敏感,少打很多字。

同一页面往下,Auto Import区域有两项:

  • Add unambiguous imports on the fly:只有一个候选包时自动导入
  • Optimize imports on the fly:自动清理没用到的 import

两项都勾上。原文提到的“复制时自动导包”就是这两个开关在起作用,粘一段代码进来,需要的包自动补上,不需要的手动删。注意第一项只处理“只有一个候选”的情况,如果Date这种同时存在于java.util和java.sql的类,还是会弹窗让你选,这是设计如此,别指望它替你决定。

3.4 界面减负:行号、虚线、自动更新、内存指示

剩下这几项纯属个人习惯,但都是装完就想改的。

显示行号在Settings → Editor → General → Appearance → Show line numbers。2020.1.4 需要手动勾,2022.2 新装默认就是开的。

右侧那条竖直虚线是排版参考线,Settings → Editor → General → Appearance里把 “Show hard wrap and visual guides” 相关选项取消勾选。2020.1.4 上这个选项叫 “Show hard wrap guide”,2022.2 合并成了带子菜单的一项,找不到就用设置页左上角的搜索框直接搜 “visual guides”。

关掉自动更新:Settings → Appearance & Behavior → System Settings → Updates,取消 “Automatically check for updates”。公司电脑权限受限时,自动更新下载完装不上,每次启动弹窗,很烦。

显示内存大小:双击 Shift 打开全局搜索,输入show memory,找到 “Show memory indicator” 开关设为 ON,右下角状态栏就会显示xxxM of 2048M。这个数字在跑大项目时很有用,看到占用逼近上限就该调Help → Edit Custom VM Options里的-Xmx了,别等到频繁 Full GC 卡顿才想起来。

4. 快捷键与编辑效率:把 Eclipse 的手感搬过来

从 Eclipse 迁到 IDEA 的人,前两周最痛苦的不是功能少,是手不听话。Ctrl 点击、Alt+方向键、列编辑,这些肌肉记忆全都要重建。IDEA 提供了足够多的定制入口,能把它调教到接近原来的手感,但有几处需要绕一下。

4.1 用 Quick Lists 还原 Eclipse 的 Ctrl 多跳转

Eclipse 里在类名、方法名上按住 Ctrl,会弹出一个小菜单:跳接口、跳实现类、跳返回值类型,让你选。IDEA 默认是 Ctrl+左键直接跳到声明,没有选择这一步。想还原这个行为,靠的是 Quick Lists。

配置分三步。第一步,Settings → Keymap → Quick Lists,点+新建一个列表,起名比如CtrlJump。然后在弹出的树里展开 Main Menu → Navigate,把这几项加进去:

  • Declaration(声明)
  • Implementation(s)(实现)
  • Super Method(父方法)
  • Type Declaration(类型声明)

第二步,给这个列表绑快捷键。回到 Keymap 主界面,搜索你刚建的列表名CtrlJump,右键 → “Add Keyboard Shortcut”,按下Ctrl+左键对应的组合。注意 IDEA 里鼠标快捷键是单独一类,右键菜单里有 “Add Mouse Shortcut”,可以设成Alt+Button1或者Ctrl+Button1,看你想覆盖哪个。

第三步,处理冲突。Ctrl+左键默认已经被 “Go to Declaration” 占用,加了新绑定之后会提示冲突,选择保留两者即可,实际触发时先弹列表,选完再执行。

这套配置的意义在于把“我到底想看声明还是看实现”这个决定权还给你。看框架源码时,接口方法点进去只能看到空壳,必须再点一次找实现类,多这一步很打断思路。配好之后一次点击拿到列表,选实现直接到位。

4.2 列模式:标准列和不规则列两种用法

批量改一批配置项、给一组字段统一加修饰符,这种活不用列模式就得一行行改。IDEA 给了两种模式。

标准列模式:按住Alt不放,鼠标左键从起点往下拖,会拉出一个矩形选区,输入的内容会同时写进每一行。适合给连续多行加同样的前缀。

不规则列模式:Shift+Alt+左键在多个位置逐一点击,每点一次加一个光标,位置可以任意。适合给不连续的几行同时改同一个变量名。

两种模式的区别在于选区形状:矩形 vs 离散光标。前者一次拖到位,后者可以精确控制落在哪几行。

一个实际场景:一个类里有十个private String字段,要全部加@ApiModelProperty注解。用标准列模式在每行行首拉出矩形光标,一次性输入注解前缀,十行同时改完,比正则替换稳妥,不会误伤其他行。

4.3 自定义缩写:把 syso 搬过来

sout是 IDEA 的默认输出模板,System.out.println()敲四个字母加 Tab 就出来。Eclipse 用户习惯的是syso,切过来之后手指总会自觉地打syso,然后发现没反应。

改法:Settings → Editor → Live Templates,展开Java分组,能看到sout这一条。选中它,点右上角的 “Duplicate” 复制一份,把 Abbreviation 改成syso,Template text 保持System.out.println($END$);不变。$END$是光标最终停留的位置,不要删掉,否则输出完光标会跑到行首。

更省事的做法是直接编辑模板配置文件。Live Template 存在 IDEA 配置目录下的templates文件夹里,导出格式长这样:

<templateSet group="user"> <template name="syso" value="System.out.println($END$);" description="Eclipse 风格的控制台输出" toReformat="true" toShortenFQNames="true"> <context> <option name="JAVA_STATEMENT" value="true" /> </context> </template> </templateSet>

name是缩写词,也就是敲什么触发。value是展开内容,$END$标记光标落点,还可以用$VAR$定义变量,展开时按 Tab 逐个跳转填写。toReformat="true"表示插入后自动按代码风格排版,避免缩进错位。context限定生效范围,JAVA_STATEMENT表示只在 Java 语句位置触发,写在注释里不会误触。

这份文件可以直接导入:File → Import Settings选包含 templates 的 zip 包,团队里一个人配好,其他人导入就统一了。这也是配置迁移的核心思路,后面单独讲。

5. 避坑与常见问题排查:五条实际遇到过的记录

配置项改完之后没生效,比不知道怎么配更浪费时间,因为你以为已经配好了。下面这五条是反复出现的,按“现象 → 原因 → 解决”记录。

5.1 热部署配了但改代码没反应

现象:按教程打开了自动编译,Registry 里的开关也设了,改完 Java 文件保存,浏览器刷新还是旧结果,必须手动重启。

原因有两个层次。第一层,compiler.automake.allow.when.app.running这个 Registry 开关在 2020.1.4 上存在,到 2022.2 已经被移除,新版把“运行时自动编译”合并进了Settings → Build, Execution, Deployment → Compiler → Build project automatically,再去找 Registry 里的键会发现根本没有。第二层,光有自动编译还不够,JVM 层面需要有类加载机制配合,也就是 Spring Boot 的 devtools。

解决分两步。先确认自动编译开着,Ctrl+Shift+Alt+/打开 Registry(2020.1.4 用这个入口),找compiler.automake.allow.when.app.running并勾上;2022.2 上跳过这步,直接看 Compiler 页面。然后加依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>

scope设为runtime表示只在运行期生效,不进编译期 classpath。optional设为true是关键,它阻止这个依赖传递给下游模块,否则打成生产包时会带着 devtools,启动日志里一堆重启提示。

改完依赖要重新导入 Maven,然后 IDEA 里按Ctrl+F9手动触发一次 Build,之后改代码保存,看控制台有没有 “Restarting due to class change” 之类的日志。没有这条日志,说明 devtools 没生效,回去检查依赖是不是加在了正确的模块里。

5.2 满屏 Private field is never assigned

现象:@Autowired注入的字段,每个都标黄,提示 “Private field 'xxx' is never assigned”,整个类飘满警告。

原因:这条检查属于 Unused declaration 系列,静态分析看不到 Spring 容器在运行时的注入行为,所以认定这个字段永远没人赋值。不是代码问题,是检查规则不了解框架。

解决:Settings → Editor → Inspections,搜索Unused declaration,在右侧的 Options 里找到与注解相关的忽略项,把org.springframework.beans.factory.annotation.Autowired加进去。加完之后该类警告消失,但真正没用到的私有字段仍然会提示,检查本身没被削弱。

顺带一提,同一页面还有 “Entry points” 的概念,标记为入口的方法不会被判定为未使用。项目里如果有反射调用的方法,也在这里加。

5.3 .iml 和 .idea 又冒出来了

现象:明明在项目视图里隐藏了.idea和*.iml,过两天又出现了,提交时不小心带上去,同事拉下来一片冲突。

原因:Settings → Editor → File Types → Ignored Files and Folders里的隐藏只是“看不见”,文件还在磁盘上,Git 照样跟踪。真正要解决问题得从版本控制层面处理。

解决:在项目根目录的.gitignore里加规则:

# IDEA 工程文件,不入库 .idea/ *.iml *.iws out/ target/

已经提交过的要清一次缓存,否则规则不生效:

# 把已跟踪的 .idea 从索引里移除,本地文件保留 git rm -r --cached .idea git rm --cached "*.iml" git commit -m "chore: 移除工程文件跟踪"

--cached表示只动索引不动工作区,本地配置不会丢。执行完再提交,之后.idea就只在本地存在,不影响协作者。

5.4 配置导出后跨版本导入,字体全乱

现象:2020.1.4 导出settings.zip,导入到 2022.2,字体变成默认值,主题也没了,部分设置项显示为灰色不可改。

原因:两个大版本之间菜单结构、配置项命名都有变化,旧版导出的包里某些键在新版不存在,导入时会被静默丢弃,丢弃之后对应项就回落成默认值。字体、主题这类和 UI 框架绑定的配置最容易出问题。

解决:跨大版本迁移只导“稳定”的部分。File → Export Settings时可以勾选导出范围,把 UI 相关的取消掉,只留 Keymap、Live Templates、Inspections、Code Style、File Encodings 这几类。插件配置单独处理,不要跟着配置包走,因为插件本身要重新按版本装。

导入之后一定要做一遍核对:打开 File Encodings 看三个下拉框、打开 Code Style 看缩进、打开 Keymap 看自定义快捷键在不在。这几项是静默丢失的高发区。

5.5 改了文件,文件夹不变色

现象:改了某个文件,项目树里对应文件夹应该变色提示有未提交改动,但新加的文件变色,改过的旧文件反而不变。

原因:这个高亮依赖版本控制状态,只对已经被 Git 跟踪的文件生效。新建但没git add的文件属于 untracked,状态不同,走的另一套显示逻辑。另外 2020.1.4 和 2022.2 对这个选项的位置也不一样。

解决:先确认Settings → Version Control → Confirmation里的 “Highlight directories that contain modified files in the Project tree” 是勾上的,2022.2 里可能藏在子菜单,直接搜索 “highlight” 关键词更快。再确认文件确实在 Git 跟踪范围内,用git status看是不是显示为 “Untracked files”。如果文件被.gitignore排除,那永远不会变色,这是预期行为不是 bug。

6. 装完怎么验证:七项一次过完再开工

配置改完不等于生效,这一点我踩过太多次。改完当场看着好好的,第二天启动发现编码回退了、插件被禁用了、内存指示器不见了。所以每次装完环境,我都会走一遍固定的验证流程,七项,两分钟。

验证项操作期望结果
编码新建一个.java文件,看右下角显示 UTF-8
换行符同上,看右下角行尾标记显示 LF,不是 CRLF
缩进输入一个 Tab 或四个空格,开 Show whitespaces显示四个灰点,无箭头
代码提示输入str观察补全列表出现String、StringUtils等大写开头候选
插件按Ctrl+Alt+N输入/api/user/list命中对应 Controller 方法
热部署改一个接口的返回字符串,保存控制台出现重启日志,刷新即生效
内存看右下角状态栏显示xxxM of 2048M字样

前四项是纯本地设置,最容易被“以为改过了”骗过去。尤其是换行符,.editorconfig只影响新文件,老文件必须手动 Convert,验证时一定要打开一个已有文件看,而不是新建一个。

后三项验证的是插件和运行时。Ctrl+Alt+N没反应,通常是 RestfulToolkit 没装成功或者被安全模式禁用,去 Plugins 里看有没有红色提示。热部署没日志,回去查 devtools 依赖加在哪个模块、optional有没有设、自动编译开没开。

最后补一个动作:File → Export Settings,把这次的配置导出成 zip,命名带上版本号,比如idea-config-2022.2.zip。这个包就是你下次换机器时的参照物,比事后回忆“当时好像改过编码”可靠得多。

从那以后我每次换机器,都强制走一遍这张表,不跳项、不凭感觉。有次赶时间跳过了换行符那一步,结果三天后合并分支时多出两百多行纯空白 diff,返工半小时。配置这件事没有捷径,走一遍就是走一遍。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询