目录
- 常用快捷键
- 常用技巧
- 常用设置
- 常用插件
- 常见问题
- Alt+Inser失效,单击右键没有Generate
- 右键没有Diagrams,Ctrl+Alt+U失效
- 导入Eclipse项目时,编译报错“ Error:(1, 1) java: 非法字符: ‘\ufeff’”
- 使用Spring Initializr创建项目时,提示无法连接到https://start.spring.io
- IDEA不能识别spring、springboot项目
- 在Marketplace中搜索插件一直显示无结果
- IDEA控制台乱码
- 边角上一些小的bar不见了
- 一些常用的快捷键用不了
- IDEA很卡,经常提示“Low Memory,The IDE is running low on memory and this might affect performance”
- 双击IDEA图标启动不了IDEA
- 启动项目时报错 Caused by: java.nio.charset.MalformedInputException: Input length = 1
- 启动项目时报错:命令行太长
- maven已导入依赖,但一直报错找不到该依赖中的类
- 编译、启动时报错找不到符号
- maven package后没有target文件夹
- Ctrl+Shift+F失效
- markdown文档无法预览、一片空白
常用快捷键
全局操作
双击Shift # 查找文件、符号等
Ctrl + E # 最近文件、控制台菜单 列表
Alt + F12 # 打开终端
ALt + 9 # 打开git控制台
Alt + 0 或者 Ctrl + K # 提交到本地仓库
Ctrl + Shift + K # 提交到本地仓库
Shift + F9 # debug
Shift + F10 # run
查看、分析代码
F2 # 跳转到报红的代码处
Alt + Enter # 光标移到报红的代码上时,按这个快捷键可以查看建议
Ctrl + H # 查看当前类的继承关系(列表缩进格式)
Ctrl + Shift + Alt + U #查看当前类 diagram 类图,会展示类的成员、类之间的继承关系
Ctrl + Alt + U # 查看当前类 diagram 类图(弹窗形式)
Ctrl + F12 # 查看当前类的成员(变量+常量+方法)
Alt + 7 # 查看当前类的结构(Structure),包括从父类继承的成员
Alt + F7 # 查找当前变量、方法、类的所有使用处
Alt + 上下方向键 # 跳转到到当前类中的上/下一个方法
Alt + 左右方向键 # 切换到上/下一个标签页
Ctrl + Alt + 左/右方向箭 # 跳转到鼠标点击历史中的上/下一步
Ctrl + B #转到定义处
Ctrl + G #跳转到指定行
编辑
Ctrl + C # 复制当前行
Ctrl + X # 剪切当前行
Ctrl + Y # 删除当前行
Ctrl + D # 复制当前行并在下一行粘贴出来
Ctrl + Shift + Z # 重做
Ctrl + Shift + 向上|下箭头 # 将当前行上/下移
Ctrl + I # 实现继承的抽象类、接口中的方法
Alt + Insert # 自动插入构造器、getter、setter、单元测试等方法,重写toString、hashCode、equals等方法
#也可输入equals、toString等关键字生成
Ctrl + / # 单行注释
Ctrl + Shift + / # 文档注释
Ctrl + Alt + V # 自动声明变量
Tab|Enter # 自动补全
Ctrl + [|] #高亮显示代码块开头结尾的大括号,[是跳到代码块的{处,]是跳到代码块的}处,再次按[|]扩大范围
Ctrl + Alt + Enter #在当前行上方插入新行
Ctrl + Backspace #向前删除一个单词|符号
Ctrl + Delete #向后删除一个单词|符号
Ctrl + W # 选中整个单词,再按扩大范围
Ctrl + Shift + W # 缩小选中范围
Ctrl + Shift + U # 转换为全大|小写
sout # 输出
souf # 格式化输出
soutp # 输出当前方法所有的参数值
- IDEA支持范围替换,先选中范围再Ctrl+R,则只在选中范围内进行替换
- 选中后,按 ()小括号、[ ]中括号、{ }大括号、<>标签、"“双引、''单引时,会自动包含所选内容,比如给字符串加双引号,选中之后按 Shift+” 即可
常用技巧
运行项目的多个实例
如果是web项目,需要在Program arguments中修改端口号
-server.port=9000
#或者
-Dserver.port=9000
#在命令行下 java -jar 启动web项目时也可以设置此参数
实质都是以命令行参数的形式传入,此种方式设置的参数优先级最高,会覆盖配置文件中对应的配置
全局查找、替换,正则匹配
Ctrl+Shif+F/R,也可以右键 Find/Replace in Path,或者 Edit -> Find -> Find/Replace in Path。可以选中目录后操作,也可以直接操作。
正则匹配
示例:将key、value都加上引号
username: chy,
password: abcd,
tel: 188xxxxxxx,
birthday: 2000-01-01 00:00:00,
- 可以用 () 括起来作为一个整体,引用时依次对应 $1、$2、$3
- 换行对应 \n
项目启动后自动在浏览器中打开
勾选After launch,在项目启动后会自动在指定浏览器中打开指定页面。
可以设置使用的浏览器、打开的页面。
使用关联应用打开对应的文件
idea不能识别某些类型的文件,比如.xmind,双击打开时可以选择用操作系统中的关联应用打开
如果上面选成了第一个:作为 text 文件打开,可以在 text 中移除该种文件类型,再在使用关联应用打开中加上
代码重构
- Shift+F6 重命名类名、方法名、变量名
- Ctrl+Shift+F6 修改数据类型
- Ctrl+Alt+M 提取代码段为方法
debug
- 执行到某个断点时,可以按 Alt+F8 写变量的一些表达式,回车查看结果。
- 直接在方法上打断点,debug时会自动在方法体的第一行、最后一行打断点停留,适合查看方法入参、返回值。
- F9 跳转到下一个断点,如果断点时一个方法,可以按 F7 进入方法内部。
- 条件断点:常用于循环、多次执行的情况,右击断点写条件,当变量满足条件才停下。条件直接写if()括号中的部分。
- 异常断点:不需要手动打断点,Ctrl+Shift+F8,点击+号添加要监测的异常,发生该种异常时自动停下。取消勾选即去掉该异常监测。
- 多线程调试:右击断点选择Thread,如果异常端点 Ctrl+Shift+F8 右侧选择 Thread 。
远程debug
远程debug可以在本地idea中直接调试远程服务器上运行的java应用,前提是idea本地代码、远程服务器上的代码是一致的。
远程服务器上启动应用时,需要添加远程debug的jvm参数,指定远程debug使用的端口
#此处指定远程debug使用9000端口
java -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=9000 -jar xxx.jar
如果使用的是外置tomcat,修改bin/catalina.sh,在开头加上一行
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=9000"
IDEA配置
具体原理可参考:https://blog.csdn.net/qq_37192800/article/details/80761643
同时对多行代码进行相同、相似的编辑
比如 jpa、swagger,在实体类属性上都要加相同|相似的注解。
选中要同时编辑的部分:按住Alt + 鼠标左键向下拖 ,也可以直接按住鼠标滚轮往下拖。
文件、目录比较
选中要比较的文件|目录,右键 Compare Files | Directories,和git合并冲突一样,对比时可以直接编辑文件内容。
常用设置
注释与代码对齐
一般修改java、html、xml的即可,js默认就是对齐的,不用改
创建类时自动在注释中提供作者信息、日期
/**
*
* @author chy
* @version 1.0
* @date ${DATE}
*/
添加mybatis映射文件的模板
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
添加后,new新建文件时就有相关选项了。
mybatis xml映射文件、sql脚本中的表名、字段名报红
常用插件
Material Theme UI
一个不错的theme插件,提供了多种主题,使用免费版即可。
Translation
翻译。选中要翻译的部分,Ctrl+Shif+Y 英汉互译,Ctrl+Shift+X 翻译并替换。
内地不能直接使用谷歌翻译,在hosts中指定谷歌翻译对应的ip也不行,如果有梯子的话可以通过设置idea的代理解决,参考:https://github.com/YiiGuxing/TranslationPlugin/issues/2296
SequenceDiagram
时序图,时序图常用于分析方法的调用流程。
对方法名单击右键 -> Sequence Diagram -> 选择深度、是否只展示本项目中的类等选项。
lombok
编译时自动生成一些方法
Free MyBatis plugin 或 MyBatisX
mapper接口、xml映射文件之间的快速跳转。
Free MyBatis plugin 是绿色箭头样式,MyBatisX是小鸟样式。
Free MyBatis plugin 的作者转行了,不再维护此插件,从 idea 2021版本开始在idea插件市场中已经搜不到这个插件,可以用 MyBatisX 代替。
intellij-mybaitslog
可以在yml中配置mybatis打印日志,但打印的sql语句、参数是分开的,需要手动拼接才能得到可直接执行的sql
==> Preparing: select * from t_user where id = ?
==> Parameters: 1(Integer)
Mybatis Log Plugin 可以拼接sql参数,打印可直接执行的sql,方便但收费。可以使用 intellij-mybaitslog 代替,作者没有将此插件发布到 idea插件市场,需要到 github 下载后从硬盘安装。
github地址:https://github.com/Link-Kou/intellij-mybaitslog
原理是截取mybatis打印的sql日志,来拼接sql语句,所以需要在打开 mybatis log窗口后才打印sql日志,且需要在yml中配置mybatis打印sql语句,这样才能截取到
mybatis:
configuration:
# org.apache.ibatis.logging.slf4j.Slf4jImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
MyBatisCodeHelperPro
mybatis逆向工程,根据数据表生成代码
编码规范检查
- Alibaba Java Coding Guidelines
- SonarLint:如果配置 SonarQube/SonarCloud connections 时报错,通常是插件插件版本太高、不兼容导致的,可以尝试安装更低版本的插件。
- CheckStyle:如果配置 checkstyle.xml 时报错,通常是选择的版本太高,可以尝试调低一些
Maven Helper
依赖分析、解决依赖冲突
GenerateSerialVersionUID 生成序列化的UID
Alt+Insert,选择 SerialVersionUID 即可自动给当前类生成序列化的UID。
对象序列化时会记录类的当前版本,反序列化时会将该类的当前版本与记录的版本(UID)比较,要一致才可以反序列化。
Convert YAML and Properties File
yml、properties文件转换,转换时会自动删除注释。
Vue.js Vue代码提示
String Manipulation 字符串处理
可在 Keymap -> Plugins -> String Manipulation 设置相关快捷键。
最常用的2种命名是camel、常量名的snake,我习惯与sublime保持一致,设置为 Ctrl + Alt + C + C
Easy Code 代码生成工具
MBG可以生成mapper接口、xml映射文件、entity,但需要在pom.xml中加一些MBG的配置,对项目文件有侵入,且不能指定生成文件的模板,太麻烦,一般不用。
EasyCode是IDEA的一款插件,更加简单强大,可以根据数据表生成entity、controller、service、dao|mapper,对项目文件没有侵入,可以指定生成文件的模板,支持效果预览。
自定义模板使用的velocity的语法,可参考
https://www.cnblogs.com/yangzhinian/p/4885973.html
Squaretest 生成单元测试
在目标类中 Alt+Insert -> Generate Test - Confirm Mocks,选择要mock的成员。初次使用时还需要选择模板,通常选择 JunitMockitoSpring.java.ft 。
IDEA自带了单元测试生成,在目标类中 Alt+Insert -> Test,但功能单一,只生成测试类、测试方法,不会自动注入依赖、自动mock。
TestMe之类的插件也可以生成单元测试,但提供的模板不好用。
SVNLabel 查看svn提交信息
Codota AI AutoComplete for Java and JavaScript 代码AI提示
常见问题
Alt+Inser失效,单击右键没有Generate
原因是禁用了2个自带的插件,启用即可
右键没有Diagrams,Ctrl+Alt+U失效
原因是禁用了自带的UML,在已安装中搜索uml,启用即可
导入Eclipse项目时,编译报错“ Error:(1, 1) java: 非法字符: ‘\ufeff’”
点击IDEA右下角的编码字符集,先转换(convert)为GBK,再转回为UTF-8
使用Spring Initializr创建项目时,提示无法连接到https://start.spring.io
点击“Check connection”测试一下配置,输入 https://start.spring.io ,提示连接成功,就说明弄好了。
此方法不一定有用,有时候歇几个小时就可以连上了
IDEA不能识别spring、springboot项目
项目结构 -> Modules -> 看一下有没有配置spring,spring的配置是否正确
在Marketplace中搜索插件一直显示无结果
重启IDEA后重试,如果还是不行,可以尝试以下2种方式
1、使用代理
2、到官网搜索下载插件,然后从硬盘安装插件
插件版本要与IDEA版本对应
IDEA控制台乱码
1、修改IDEA的文件编码
2、修改IDEA的配置文件
用记事本打开这2个文件,分别在末尾添加一行
-Dfile.encoding=UTF-8
重启IDEA生效
3、如果是使用tomcat运行web项目,tomcat在IDEA控制台的输出乱码,还需要修改tomcat配置文件
tomcat -> conf -> logging.properties -> 搜索console
java.util.logging.ConsoleHandler.encoding = GBK #把UTF-8改为GBK
重启tomcat(项目)生效
边角上一些小的bar不见了
View -> Appearance -> 勾选需要的bar
eg. 右上角的run、debug、版本控制的工具栏不见了,勾选Navigation Bar
一些常用的快捷键用不了
eg. Ctrl+Alt+V用不了
一般是因为快捷键被其它程序占用了,常见的比如qq、搜狗输入法、有道词典,检查这些软件的快捷键设置
IDEA很卡,经常提示“Low Memory,The IDE is running low on memory and this might affect performance”
排除硬件因素,常见的原因、解决方式如下
卸载多余的插件
清除缓存
可能是IDEA的缓存过多,可以 File -> Invalidate Caches/Restart 清除缓存,治标不治本
不管理冗杂、不必需的目录
可能是IDEA管理了很多冗杂、不必需的目录,导致内存占用较多,常见的表现形式是进入项目时index时间长。
常见的不应该建立索引的目录:java的target目录,vue的node_modules、dist目录,主要是node_modules目录
对node_modules目录单击右键 -> Mark Directory as -> Excluded,排除在IDEA的管理之外。
也可以在项目结构 -> Modules -> Excluded 中设置、恢复。
设置的内存太小
修改IDEA bin目录下的idea64.exe.vmoptions
-Xms4096m
-Xmx4096m
-XX:ReservedCodeCacheSize=1024m
-XX:MaxMetaspaceSize=2048m
在Help -> Edit Custom VM Options中也可以编辑idea64.exe.vmoptions文件,但文件位置不同,不是用同一个文件,bin下的是IDEA默认的配置,Help中的是用户配置,如果2个文件同是存在,用户配置的优先级更高。
-Xms、-Xmx的值一般设置相同的,防止堆扩容造成程序运行不稳定。
重启IDEA生效
双击IDEA图标启动不了IDEA
不管是双击IDEA的桌面图标,还是双击IDEA的exe文件,都启动不了IDEA。
一般是设置内存时,最大堆内存比最小堆内存小导致的
- 如果 C:\Users\用户名.IntelliJIdea\config下有 idea64.exe.vmoptions 这个文件,检查这个文件中配置的最大堆内存、最小堆内存
- 如果没有,则检查 IDEA bin目录下的idea64.exe.vmoptions中配置的最大堆内存、最小堆内存
将最大堆内存、最小堆内存设置为相同的即可。
C:\Users\用户名.IntelliJIdea\config、IDEA的bin目录下都有这个配置文件,但前者是用户配置,优先级更高,后者是默认配置。
如果还不能启动IDEA,可以删除 C:\Users\用户名.IntelliJIdea ,但启动后要重新配置IDEA的各种配置
启动项目时报错 Caused by: java.nio.charset.MalformedInputException: Input length = 1
原因:文件的编码字符集不对。
解决方式:
- 我尝试修改了字符集设置,无效
- 将字符集不对的文件重命名,新建同名文件,把内容拷过去,删除原文件。有效
启动项目时报错:命令行太长
Error running ‘act-center’:
Command line is too long. Shorten command line for act-center or also for Spring Boot default configuration?
可以尝试以下2种解决方式
方式一、在运行配置中设置短命令行,选择 JAR manifest 或 classpath file
可以左下角配置模板,对以后的单元测试都有效
方式二、.idea/workspace.xml,搜索 <component name="PropertiesComponent">
,启用动态classpath
<!-- 启用动态classpath -->
<property name="dynamic.classpath" value="true" />
maven已导入依赖,但一直报错找不到该依赖中的类
原因是IDEA没有识别到对应的jar包,可以尝试以下几种解决方式
- 在项目结构中以jar包方式直接添加
- 像入门学jdbc时一样,在resources下新建一个文件夹来放置依赖,右键添加
编译、启动时报错找不到符号
如果确认项目配置、代码没问题,可以尝试以下几种方式
- mvn clean、compile
- mvn clean、package
- IDEA 清除缓存并重启
maven package后没有target文件夹
在资源管理器中查看,确实生成了target文件夹。
解决方式
Ctrl+Shift+F失效
原因是与其他软件的快捷键冲突,我的是与搜狗输入法的冲突。
markdown文档无法预览、一片空白
- 检查IDEA文件编码设置
- 检查markdown配置
body {
font-family: 'WenQuanYi Micro Hei', arial, sans-serif;
}
code {
font-family: 'WenQuanYi Micro Hei Mono', arial, sans-serif, monospace;
}