IDEA指南


Author
|
Earl
Describe
|
记录IDEA快捷键、日常操作、常见问题并提供相应的解决方法
Last Update
|
2024-5-02

 

疑难杂症

Maven

SpringBoot作为父包导入爆红

  1. 问题描述

    • 新建SpringBoot项目或者maven项目,导入spring-boot-starter-parent的RELEASE版本时pom.xml爆红

    • 异常实况

  2. 原因分析

    • 在maven日常使用正常的情况下[即仓库地址正确],极大可能是IDEA自身的原因;

    • IDEA默认会缓存父依赖项信息,当引入新的本地仓库不存在的父依赖版本时,就会报错:表示找不到依赖申明,而我们引用本地仓库已存在的依赖版本并不会报错。解决思路是点击Invalidate Caches/Restart清理一下idea缓存

  3. 解决方法

    • 点击File--Invalidate Caches--Invalidate and Restart

    • 示例:

  4. 解决效果

     

IDEA

项目构建失败报错

  1. 问题描述

    • 项目构建时构建失败并在Build面板报错java: 错误: 无效的源发行版:17,此时项目过不了编译,项目无法启动

    • 异常实况

  2. 原因分析

    • 没有保证使用正确且唯一的JDK版本来编译整个项目

  3. 解决方法

    • 依次检查以下几处预设使用的JDK版本

    • 第一处

    • 第二处

    • 第三处

    • 第四处

    • 第五处

    • 第六处

    • 清除target目录并重新编译

  4. 解决效果

 

 

快捷代码

  1. psvm

    • 功能:生成main方法

  2. sout

    • 功能:生成控制台换行打印方法

    • 补充说明

      • 输入字符串变量.sout回车会生成语句System.out.println(字符串变量)

  3. 表达式.var

    • 功能:定义声明对应返回值类型的变量并用该变量接收表达式的返回值并生成对应的Java语句

  4. 表达式.return

    • 功能:将表达式作为方法的返回结果生成return语句

  5. 表达式.notnull

    • 功能:生成判断表达式不为nullif条件语句,满足表达式不为null的情况下执行if代码块

  6. 逻辑表达式.while

    • 功能:生成while语句块,当逻辑表达式为true时执行while循环体

  7. 逻辑表达式.if

    • 功能:生成if语句块,当逻辑表达式为true时执行if代码块

 

快捷键

  1. 简单操作

    • 当光标移动到项目的文件目录上并选中一个目录或文件后

      • 使用上移或者下移快捷键能切换被选中的目录或文件

      • 使用Enter键能展开或收起目录

    • 按键Esc可以退出任何当前窗口

    • 双击鼠标左键选中一个词,连续三次点击鼠标左键选中一行

    • 通过拖拽页面的顶部页面选项卡,可以设置页面左右或者上下同一个窗口多页面显示

项目相关


快捷键功能选项卡
Ctrl+F9重新编译整个项目Build--Build Project
Ctrl+Shift+F9重新编译当前页面XXX资源Recompile XXX
Alt+8调出services面板 

编码相关

快捷键功能
Ctrl+Alt+左右箭头IDEA页面跳转到上或下一个光标停留位置,该快捷键会被QQ音乐切歌快捷键阻塞
Alt+左右箭头跳转相邻左边或右边文件窗口
Ctrl+Shift+上下箭头单行代码和上一行或者下一行交换位置
属性和方法直接带着注解注释上移一行或者下移一行,碰到方法或者属性时与其整体交换上下位置
Alt+上下箭头光标跳转到当前类当前光标位置的上一个或下一个方法名
Shift+Alt+上下箭头仅光标所在行上下移动一行
Ctrl+Y删除光标所在行
Ctrl+D复制当前行到下一行
Crtl+Shift+F12展开或收起Project左侧边栏
Alt+Insert在弹出窗口选择生成固定方法/构造方法
Crtl+Shift+F10运行当前Java类中的主方法
Ctrl+P显示光标选中方法所有重载方法和对应参数列表
Alt+Enter该快捷键是IDEA中的万能快捷键,能根据语境提示可选操作[1]
双击Shift弹出全局搜索框对项目下的所有文件进行搜索
Ctrl+N弹出全局搜索框对项目下的所有类或者接口文件进行搜索
Crtl+F12弹窗显示当前类的所有属性和方法,输入字符能搜索同名方法或者属性
Crtl+Shift+/在光标处生成多行注释
Ctrl+/在光标处生成单行注释
Crtl+Alt+B接口或抽象类上使用该快捷键在弹出列表显示其所有的实现类,只一个实现类会直接跳转
方法上使用该快捷键可以查看一个抽象方法的全部子类实现
Ctrl+Alt+鼠标左键效果相同
方法还可以通过选中方法--鼠标右键--go to--Implementation达到相同的效果
F4跳转到选中变量、类、方法对应的声明定义位置
Crtl+B跳转到选中变量、类、方法对应的声明定义位置
在对应定义位置使用该快捷键显示所有被使用位置列表
Ctrl+鼠标左键跳转到选中变量、类、方法对应的声明定义位置
在对应定义位置使用该快捷键显示所有被使用位置列表
Shift+F6修改包名、类名、变量名、方法名、文件名等等并同步到项目中被使用到的所有地方
Crtl+Alt+L调整代码格式
Tab缩进
Shift+Tab取消缩进
Shift+鼠标滚轮左右拖动当前窗口,相当于左右移动窗口下方进度条
Ctrl+O弹窗选择当前所在类要重写的方法
Ctrl+X剪切文本
Ctrl+L/Ctrl+F检索当前窗口内容
Ctrl+Shift+U转换字母大小写,注意是将任意字符串中的所有字母全部转换为大写或者小写
Crtl+Alt+U以弹窗的形式用UML类图展现当前类的所有父类和实现的接口
Crtl+Alt+Shift+U以新建窗口的形式用UML类图展现当前类的所有父类和实现的接口,
Pom.xml中使用以分析依赖树的形式展示项目的依赖关系
当前窗口鼠标右键--Diagrams效果是一样的
Ctrl+H以右侧边栏树形列表的形式展示当前类的类继承结构图,包含所有父类和子类,不包含实现接口
Ctrl+Shift+R弹出整个项目的全局搜索替换窗口
Crtl+Alt+T在弹窗列表中选择包围选中代码块的Java语句
Alt+鼠标左键/按住鼠标滚轮多行编辑
Ctrl+Z撤销当前操作
Ctrl+Shift+Z恢复上次被撤销的操作,该快捷键会被搜狗输入法的快捷键阻塞
Ctrl+C可以选中文本复制,也可以直接复制光标所在行
Alt+7调出类结构左侧边栏,该侧边栏常驻显示一个类中的所有属性和方法
点击IDEA左下角的Structure也能达到相同的效果
Shift+Enter在光标所在行的下面增加一行,光标移动到下一行的行首
Ctrl+Shift+F弹出全局检索窗口在整个项目的文件中搜索指定文本内容
Ctrl+Enter在光标下面添加一行空白行
Crtl+Alt+Shift+/打开Maintenance菜单,这个菜单里面的设置在IDEA的使用中可能会涉及
Ctrl+I接口的实现类创建好后需要重写其中的抽象方法,该快捷键可以选择接口中的方法进行实现
实际上和万能快捷键重写接口抽象方法的效果是一样的
Ctrl+Shift+VIDEA中剪切或者拷贝的代码历史记录,选中可以粘贴历史记录到光标处
Ctrl+Q能查看一个方法的API文档,需要下载源码才能看,和鼠标在方法上悬停效果是一样的
Alt+F7选中方法使用该快捷键可以在Find面板中查看该方法在哪些地方被使用过
该快捷键会被英伟达的GeForce Experience的快捷键阻塞
选中方法鼠标右键--Find Usages也能弹出对应方法的Find面板
IDEA的底部可以直接打开Find面板,但是不能随着选中方法实时变化,仍需要该快捷键触发
Crtl+Alt+Shift+C复制一个类的全限定类名
选中类名--鼠标右键--Copy Reference也能达到相同的效果
Ctrl+\使用预设模板为类、方法、属性生成注释
Ctrl+Alt+M将代码块抽取成一个方法,并在抽取位置通过方法名来调用
MindManager的启动快捷键阻塞,修改了快捷方式快捷键还是不行,这破软件0.o?
通过选中代码--鼠标右键--Refactor--Extract--Method--弹窗输入方法名也能实现该效果
Ctrl+E调出最近浏览过的文件列表
Ctrl+Alt+O清除所有多余的import导包语句
Ctrl+Home/End当前页面跳转到页面头或者页面尾
Ctrl+(-/=)展开或者收起光标所在代码片段
Ctrl+Shift+(-/=)展开或者收起当前页面的所有代码片段
Ctrl+W选中当前光标所在代码块,多次触发代码块会逐渐变大
Ctrl+Shift+WCtrl+W的反向操作,多次触发代码块会逐渐变小,最小变成光标

 

书签相关

  1. 书签快捷键

    快捷键功能
    F11给光标所在行添加或者移除书签
    Ctrl+F11给光标所在行添加特殊标记的书签
    Ctrl+Shift+数字键给光标所在行添加、更改或者移除以数字作为助记符的特殊书签
    Shift+F11弹窗查看现存的全部书签
    在该弹窗中可以使用快捷键Ctrl+Enter给选中书签添加一段描述
    在该弹窗中可以使用快捷键Alt+上下箭头调整该窗口中书签的排列顺序,不会影响书签实际分布
    在该弹窗中可以使用快捷键Delete删除指定书签
    Alt+2将书签列表常驻在左侧边栏
    点击IDEA左下角的Favorites也能达到相同的效果
    Ctrl+数字键快速跳转到以数字作为助记符的特殊书签

     

 

常用操作

配置多个运行实例



  1. 点击Edit Configuration打开运行/调试配置窗口,选择要进行多开的目标实例,点击拷贝按钮,此时会增加一个新的运行实例,修改新实例名称,在Configuration选项卡中配置Environment.Environment Variables设置条件为--server.port=10086来指定运行实例在同一台机器上的通信端口

 

自动导包

  1. 导入外部代码或者外部项目的时,需要关联jar包引用,正常情况下,导包数量少IDEA都是使用快捷键"Alt+Enter"组合键一个个导入,当存在大量包需要导入时,一个个导包就显得有些拉胯,不像Eclipse可以使用 "Ctrl+Shift+O" 组合快捷键就可以批量导入包,IDEA可以通过以下设置实现当前文件自动导入只有唯一类名的包,对于存在类名相同全限定类名不同的包仍然需要使用快捷键"Alt+Enter"组合键一个个导入,具体配置如下:

 

Debug

设置断点生效条件



  1. 实例

    • 只需要拷贝以下代码到断点右键复制粘贴到Condition框内

      • 🔎:比如在HashMap在扩容transfer方法一进入就加断点,右键断点处可以设置如下生效条件,该条件的意思是只让变量newTable.length即新数组的容量为32且当前线程名为Thread-0或者Thread-1时才会暂停到断点处

    • 断点的暂停类型为Thread表示选择多线程调试,在调试面板的frame选项卡切换到对应线程点击运行到下一处断点,只有当前选中的线程才会直接运行到下一个断点,其他线程仍然停在上一个断点处;选择All点击运行到下一处断点是所有线程都运行到各自的下一处断点

 

查看对象完整属性



 

  1. 查看方法

    • 选中变量右键--View as--Object,这样就会显示变量的所有属性

    • 对于数组元素也是一样的,HashMap中的数组只会展示数组引用指向的元素对象,如果元素对象是链表的头,可以将元素变量右键--View as--Object,这样就能看到链表元素的上一个和下一个元素对象的所有属性了

 

设置项目编码格式



  1. 设置方法

    • Settings/Editor/File Encodings中设置所有的编码格式包括全局编码、项目编码、各个模块编码、属性配置文件编码都为UTF-8,这样才能保证如使用支付宝支付业务的数据编码正确,否则总是会收到支付宝的错误页提示签名错误等各种问题

 

插件

名字功能备注
Alibaba Java Coding Guidelines将编码过程中不规范的地方列举出来并提示更规范的改进
"使用ScheduleExecutorService代替Timer吧"
阿里编码规约插件
ASM在右侧边栏直接点开就能查java代码对应的字节码反编译插件
   
   

 

附录

  1. 方法上的多行注释在使用快捷键Ctrl+\生成带模板的方法注释时会自动添加到注解@描述

  2. 一个看源码小技巧,遇到要点进方法源码的,直接使用快捷键Ctrl+Alt+B替代Ctrl+B跳转,如果是抽象方法运气好只有一个实现直接跳转对应实现不会跳转到抽象类或者接口中去,运气不好有多个实现就到每个对应的实现去看吧,也可以打断点,但是搭环境不太方便

  3. IDEA中流式操作的每个方法都建议新起一行,这样在方法末尾IDEA会提示该流式操作返回值的类型