# IDEA使用
# Flag
- https://github.com/JetBrains (opens new window)
- 简体中文专题教程 https://github.com/judasn/IntelliJ-IDEA-Tutorial (opens new window)
- 教育邮箱免费申请JetBrains教育许可证 (opens new window)
- JetBrains全系列软件激活教程激活码以及JetBrains系列软件汉化包 (opens new window)
- JetBrains 2019.3系列软件汉化包 (opens new window)
- IntelliJ IDEA神器使用技巧 (opens new window)
- IDEA的基本使用:让你的IDEA有飞一般的感觉 (opens new window)
- 挑战idea社区版Javaweb开发 (opens new window)
- 无需破解,使用IDEA社区版开发Web项目 (opens new window)
- 已经足够好用的IDEA社区版 (opens new window)
查看类类图及继承关系
- 选中类右键 ->
Diagram->Show DiagramCtrl +Alt +Shift +U - 选中关系图中的名称,点击右键查看实现类
Show ImplementationsCtrl +Alt +B - 选中关系图中的名称,点击右键查看父类
Show ParentsCtrl +Alt +P
- 选中关系图中的名称,点击右键查看实现类
- 蓝色实线箭头是指继承关系
- 绿色虚线箭头是指接口实现关系
展开查看思维导图

设置
Export Settings
导出设置时一定取消以下选项
- File templates
- File templates(schemes)
- Live templates
- Live templates(schemes)
- MavenVersion
- SDK Table
File->Power Save Mode(节电模式) 勾选后将会导致提示、自动加载等都不生效
# 建立多级项目
特别说明:每个模块中的顶级包名(java目录下的包名)一定不能一样,否则编译器会把多个模块中的代码编译相互串连。 如:
src/main/java/com/bajins/demo这里的com/bajins/demo就是顶级包名, 应该加上当前项目名src/main/java/com/bajins/demo/admin
创建顶级项目(根项目)
- 点击顶部菜单栏
File->New->Project(或在欢迎页面点击Create New Project) ->Maven(不要勾选Create from archetype) ->Next - 填写
Name(项目名)、GroupId(包名)、Artifact(项目名),点击Next - 打开
pom.xml,添加<packaging>pom</packaging>(聚合工程或传递依赖用),如果有了就不用添加 - 删除除了
pom.xml以外的其他文件和目录(包括src)
创建子项目(二级项目)
- 在顶级项目名上点击右键弹出菜单(或点击顶部菜单
File) ->New->Module->Maven(不要勾选Create from archetype) ->Next - 填写
Name(项目名)、GroupId(包名)、Artifact(项目名) -> 点击Next-> 选择Parent(上级项目)放在最后操作是因为修改Name时会自动变化 - 打开
pom.xml,添加<packaging>pom</packaging>(聚合工程或传递依赖用) - 删除除了
pom.xml以外的其他文件和目录(包括src)
创建子模块(最后一级项目)
如果还需要创建下级项目,重复创建子项目的操作即可
创建子模块只需要重复创建子项目,但是不要删除任何其他文件和目录,也不要添加
<packaging>pom</packaging>
展开查看示例结构
demo # 顶级项目(根项目)
│ pom.xml
│
├─admin # 二级项目
│ │ pom.xml
│ │
│ ├─admin-api # 二级项目模块
│ │ │ pom.xml
│ │ │
│ │ └─src
│ │ ├─main
│ │ │ ├─java
│ │ │ └─resources
│ │ └─test
│ │ └─java
│ └─admin-web # 二级项目模块
│ │ pom.xml
│ │
│ └─src
│ ├─main
│ │ ├─java
│ │ └─resources
│ └─test
│ └─java
└─buyer # 二级项目
│ pom.xml
│
├─shop # 三级项目
│ │ pom.xml
│ │
│ ├─shop-api # 三级项目模块
│ │ │ pom.xml
│ │ │
│ │ └─src
│ │ ├─main
│ │ │ ├─java
│ │ │ └─resources
│ │ └─test
│ │ └─java
│ └─shop-client # 三级项目模块
│ │ pom.xml
│ │
│ └─src
│ ├─main
│ │ ├─java
│ │ └─resources
│ └─test
│ └─java
└─user # 三级项目
│ pom.xml
│
├─user-api # 三级项目模块
│ │ pom.xml
│ │
│ └─src
│ ├─main
│ │ ├─java
│ │ └─resources
│ └─test
│ └─java
└─user-client # 三级项目模块
│ pom.xml
│
└─src
├─main
│ ├─java
│ └─resources
└─test
└─java
# 远程Debug
首先要设置启动JVM远程Debug参数
- 点击顶部菜单
Run点击Edit Configuration按钮 -> 出现弹窗,点击+按钮,找到Remote选项。 - 在
Name中填入Remote项目名称,在Host中填IP地址,在Port中填端口号,在Use Module classpath选择远程调试的项目module,配置完成后点击OK即可
启动项目时选择刚刚填的Remote项目名称

# 错误解决
# idea无限indexing解决方法

# OutOfMemoryError
idea Exception in thread "http-apr-8080-exec-2" java.lang.OutOfMemoryError: PermGen space
打开顶部菜单
Run->Edit Configurations-> 应用名称如SpringBoot->目标项目->Configuration在
Vm options中输入
-Xms2048m
-Xmx2048m
-XX:MaxPermSize=4096m
-Drebel.spring_plugin=true
-Drebel.spring_mvc_plugin=true
-Drebel.hibernate_plugin=true
# 启动进入欢迎界面
- 打开
File->Settings->Appearance & Behavior->System Settings- 勾选
Startup/Shutdown下的Reopen last project on startup选项
- 勾选
# 格式化代码
- 打开
File->Settings->Editor->Code Style- ->
GeneralHard wrap at设置行宽,会在格式化的时候强制插入换行符,形成显示效果上的换行Wrap on typing在编码时,超出最大行宽,则自动换行Appearance->Show whitespaces设置显示空白字符
Java在右侧的Use tab character不勾选,设置tab为4个空格- ->
Java->Wrapping and Braces- 勾选
Keep when reformatting下的Line breaks去除每次格式化时自动添加+符号 - 勾选
Keep when reformatting下的Ensure right margin is not exceeded自动换行 Comment at first column false代码格式化的时候保证commet符号在代码块附近
- 勾选
- ->
Java-> 右边选择JavaDocEnable JavaDoc Formatting启用JavaDoc格式化Wrap at right margin右边缘换行,当最后一个单词会超出边界时,自动换行Do not wrap one line comments同一行注释不要换行Preserve line feeds保留换行
- ->
File->Settings->Editor->General-> 右边Soft wrap(只会在 IDEA 的显示效果上有换行的效果,实际上并没有换行符)
设置注释不在首列(即不顶格)
File->Settings->Editor->Code Style->选择语言Code Generation->Comment Code|Comment|Comments->Line comment at first column取消勾选(行注释在第一列)Code Generation->Comment Code|Comment|Comments->Block comment at first column取消勾选(块注释在第一列)Wrapping and Braces->Keep when reformatting->Comment at first column取消勾选(注释在第一列)
英文语言搜索
Comment,中文语言搜索注释
缩进参考线
File->Settings->Appearance & Behavior->Appearance-> 右边勾选Show indent guidesFile->Settings->Editor->General->Appearance-> 右边勾选Show indent guides
垂直标尺
File->Settings->Editor->General->Appearance- 2018之前版本,右边勾选
Show right margin - 2018之后版本,右边勾选
Show hard wrap guide或Show hard wrap and visual guides (configured in Code Style options)
- 2018之前版本,右边勾选
# 去掉提示重复代码
- 打开
File->Settings->Editor->Inspections->General - 取消勾选
Duplincated File Template Usage选项
# 去掉大小写敏感提示
- 打开
File->Settings->Editor->General->Code Completion - 取消勾选
Match case,或者Case sensitive completion选择None
# 设置编码
- 打开
File->Settings->Editor->File Encodings
Global Encoding全局编码Project Encoding项目编码Default encoding for properties files属性文件的默认编码- 勾选
Transparent native-to-ascii conversion从本地转换ASCII
# 设置代码补全
快捷键:
Ctrl +Space (可能被输入法占用)修改快捷键
File->Settings->KeyMap-> 搜索Completion->Code Completion- 移除
Cycle Expand Word的Alt+/快捷键。 - 在
Basic上点击右键,去除Ctrl+空格绑定,然后添加Alt+/快捷键。
- 移除
打开
File->Settings->Editor->General->Code CompletionAutopopup code completionDelay
# 设置序列化ID
- 打开
File->Settings->Editor->Inspections->Java->Serialization issues- 勾选
Serializable class without 'serialVersionUID' - 勾选
'serialVersionUID' field not declared 'private static final long'
- 勾选
# 自定义头部注释
- 打开
File->Settings->Editor->File and Code Templates->Includes-> 在File Header中添加
/**
*
* @Description:
* @Author: ${USER}
* @File: ${NAME}.java
* @Version: 1.0.0
* @Time: ${DATE} ${TIME}
* @Project: ${PROJECT_NAME}
* @Package: ${PACKAGE_NAME}
* @Software: ${PRODUCT_NAME}
*/
- 引用:打开
File->Settings->Editor->File and Code Templates->Files- 在
Class、Interface、Enum三个模板中的public class ${NAME} {上一行添加
- 在
#parse("File Header.java")
# 自定义模板
- 打开
File->Settings->Editor->File and Code Templates->Files-> 在Class模板中粘贴
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
#parse("File Header.java")
public class ${NAME} {
//private static final Logger logger = LoggerFactory.getLogger(${NAME}.class);
private Logger log = LoggerFactory.getLogger(this.getClass());
}
# 预定义模板变量
- https://www.jetbrains.com/help/idea/file-template-variables.html (opens new window)
- https://www.jetbrains.com/help/idea/template-variables.html (opens new window)
| 变量 | 说明 |
|---|---|
| ${DATE} | 当前系统日期 |
| ${DAY} | 当前月的日期 |
| ${HOUR} | 当前时刻 |
| ${MINUTE} | 当前分钟 |
| ${MONTH_NAME_FULL} | 月份全称,例如: January, February, etc. |
| ${MONTH_NAME_SHORT} | 月份名称的前3个字母,例如: Jan, Feb, etc. |
| ${MONTH} | 当前月份 |
| ${NAME} | 在创建文件期间在新建文件对话框中指定的文件名称 |
| ${PACKAGE_NAME} | 当前所在包名 |
| ${PRODUCT_NAME} | 将被创建文件所在的IDE名称 |
| ${PROJECT_NAME} | 当前项目的名称 |
| ${TIME} | 当前系统时间 |
| ${USER} | 系统的当前用户登录名称 |
| ${YEAR} | 当前年份 |
# 自定义方法注释
- 默认方法注释快捷键:/** + Enter
- Template text
**
*
*
$params$
* @return $ruturns$
* @Description
* @author claer bajins.com
* @date $date$ $time$
*/
@param参数获取代码Groovy脚本
// 使用tab作为参数后缀间隔符
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i]+'\\b'+ ((i < params.size() - 1) ? '\\n ' : '')}; return result", methodParameters())
// 使用一个空格作为参数后缀间隔符,格式化时可以自动把所有参数对齐(推荐)
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i]+' '+ ((i < params.size() - 1) ? '\\n ' : '')}; return result", methodParameters())
@return参数获取代码Groovy脚本
// 如果有返回参数使用一个空格作为参数后缀间隔符
groovyScript("def result=\"${_1}\"; if(result == 'void'){return '';}else{return result+' ';}", methodReturnType())
使用时,直接在方法上输入/加上你的
Abbreviation名字,再按Tab键即可获取方法上的参数

- 示例

# 鼠标悬停查看注释
- 打开
File->Settings->Editor->General - 勾选
Other下的Show quick documentation on mouse move选项 - 在
Other下的Tooltip delay输入鼠标悬停时间单位milliseconds(毫秒)
# 注释自动缩进
注释默认靠左,可能代码前会有很大一段空格
- 打开
File->Settings->Editor->Code Style->JAVA、HTML、JavaScript、XML、TypeScript、Groovy、Kotlin - 右边选择
Code Generation-> 取消勾选Comment Code下的Line comment at first column和Block comment at first column
# 自动优化导包
- 打开
File->Settings->Editor->General->Auto Import - 勾选
Add unambiguous imports on the fly和Optimize imports on the fly(for current project)两个选项
Add unambiguous imports on the fly自动帮我们优化导入的包,比如自动去掉一些没有用到的包。
Optimize imports on the fly(for current project)自动帮我们导入需要用到的包。 但是对于同名的包,需要手动Alt + Enter进行导入。
# 热部署策略
- Updating Applications on Application Servers (opens new window)
- 如何在 IntelliJ IDEA 中为 Spring Boot 应用实现热部署 (opens new window)
- 打开顶部菜单
Run->Edit Configurations-> 应用名称如SpringBoot->目标项目->Configuration - 选择
Spring Boot->Update classes and resources下的On 'Update' action和On frame deactivation两个选项
On 'Update' action当代码改变的时候做什么
On frame deactivation当失去焦点,比如最小化IDEA窗口的时候做什么
# 自动编译
动态
- 同时按住Ctrl + Shift + A或者Ctrl + Shift + Alt + /,然后点击
Registry,勾选自动编译并调整延时参数。
compiler.automake.allow.when.app.running自动编译(动态)compiler.automake.trigger.delay触发自动生成以响应文件系统事件之前的延迟(单位毫秒),默认300compiler.automake.build.while.idle.timeout应用不活跃期,在此期间,如需自动触发,将自动构建,默认60000compiler.automake.postpone.when.idle.less.thanIDE处于空闲状态且少于指定毫秒数,则自动构建将被推迟,默认3000compiler.document.save.trigger.delay触发保存以响应文档更改之前的延迟(单位毫秒),默认1500compiler.build.report.statistics显示构建器的执行时间compiler.document.save.enabled是否启用项目保存以响应文档更改compiler.external.javac.keep.alive.timeout如果在指定的时间段或更长时间内未使用,则IDE将关闭缓存的javac编译过程
修改完成后直接敲回车即保存
静态
- 打开
File->Settings->Build, Execution, Deployment->Compiler - 勾选
Build project automatically自动构建项目,仅在未运行/调试时有效,静态 - 勾选
Complie independent modules in parallel并行编译独立模块,可能需要更大的堆大小
# 去掉局部背景色
去掉SQL检测
- 打开
File->Settings->Editor->Inspections->SQL - 取消勾选
No data sources configured如果没有,则提示创建一个数据源。 - 取消勾选
SQL dialect detection为<Generic>方言中的文件检测最匹配的SQL方言。
去掉背景
- 打开
File->Settings->Editor->Color Scheme->General->Code - 点击
Injected language fragment,去掉最右边的Background选项。
# 项目目录设置


# PyCharm
Python Script自定义头注释
- 在
File->Settings->Editor->File and Code Templates->Includes->File Header中添加
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#
# @Description:
# @PreInstall:
# @Author : ${USER}
# @File : ${NAME}.py
# @Version: 1.0.0
# @Time : ${DATE} ${TIME}
# @Project: ${PROJECT_NAME}
# @Package: ${PACKAGE_NAME}
# @Software: ${PRODUCT_NAME}
- 引用:打开
File->Settings->Editor->File and Code Templates->Files- 在
Python Script模板中第一行引用:#parse("File Header")
- 在
# 自动导包
- 打开
File->Settings->Editor->General->Auto Import- 勾选
Python->Show import popup
- 勾选
# 函数注释
- 打开
File->Settings->Tools->Python Integrated Tools
Docstring format选择格式:默认Plain(空的)、Epytext(Python2)、reStructuredText、NumPy、GoogleDocstrings->Analyze Python code in docstrings分析文档字符串中的python代码Render external documentation for stdlib渲染stdlib的外部文档
- 默认函数注释快捷键:""" + Enter
注意:如果使用函数注释时无法映射函数参数,在函数名中键入数遍光标,左上角亮起小灯泡, 点击小灯泡(或者使用快捷键Alt + Enter),再点击
Insert documentation string stub选择注释格式
# GoLand
Go File自定义头注释
- 在
File->Settings->Editor->File and Code Templates->Includes->File Header中添加
/**
*
* @Description:
* @Author: ${USER}
* @File: ${NAME}.go
* @Version: 1.0.0
* @Time: ${DATE} ${TIME}
* @Project: ${PROJECT_NAME}
* @Package: ${PACKAGE_NAME}
* @Software: ${PRODUCT_NAME}
*/
- 引用:打开
File->Settings->Editor->File and Code Templates->Files - 在
Go File模板中第一行引用:#parse("File Header")
# WebStorm
JavaScript File自定义头注释
- 在
File->Settings->Editor->File and Code Templates->Includes->File Header中添加
/**
*
* @Description:
* @Author: ${USER}
* @File: ${NAME}.js
* @Version: 1.0.0
* @Time: ${DATE} ${TIME}
* @Project: ${PROJECT_NAME}
* @Package: ${PACKAGE_NAME}
* @Software: ${PRODUCT_NAME}
*/
- 引用:打开
File->Settings->Editor->File and Code Templates->Files- 在
JavaScript File模板中第一行引用:#parse("File Header.js")
- 在
- 默认函数注释快捷键:/** + Enter