
扔掉鼠标,提高效率。 本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复获得所有小而美的技术专栏
你好,我是
??前言
本系列最后一篇文章介绍了本系列。IDEA熟练掌握视窗和选择的快捷键,可以快速找到并定位您想要的代码。
本文将继续IDEA在快捷键。
??所属专栏
- 【方向盘】-IntelliJ IDEA
??相关下载
- 本专栏源代码:https://github.com/yourbatman/FXP-java-ee
- 【技术专栏源代码大本营】https://github.com/yourbatman/tech-column-learning
- 【女娲Knife-Initializr访问地址:工程:http://152.136.106.14:8761
- 【程序员专用网盘】公益上线,注册发送1G超小容量,帮你练习:https://wangpan.yourbatman.cn
- 【Java开发软件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit
??版本约定
- Mac OS 12.4
- iTerm2 3.4.15(zsh 5.8)
- IntelliJ IDEA 2022.1.3
?正文
??IntelliJ IDEA快捷键
??Run/Debug
- 程序在运行模式下执行,但不会暂时悬挂或检查执行情况
- 在调试模式下,程序可以执行,但可以暂时执行,可以继续执行,可以检查变量,也可以表达求值
??Run运行
| Action Name | Key |
|---|---|
| Run | control r |
| Run current file | control shift r |
| Run… | control option r |
运行(main方法)。运行是个通用概念,这里专指Java语言里的main方法(或单元测试)@Test)。 好好理解,这里最重要的是弄清楚三个 Run的区别是什么:
control r:操作上下文入口,又称操作入口。也就是这里显示的入口: 它的优点是可以Project的直接运行这个入口启动项目非常非常方便,也是作者毕竟,一般来说,一个应用程序(无论是否Spring Boot应用or传统war应用程序)只有一个入口control shift r:运行里的main方法。它的特点是:如果有当前文件main方法,它会自动找到它运行,不管你文件有多长;当然喽,若当前文件没有main方法,按下此快捷键,将无反应- 它的典型使用场景是:自己写main在测试某些东西时,按下快捷键将非常有效
- 值得注意的是,当你按下这个快捷键时,它也会在这里切换(如下图所示),所以如果你在这个时候按下它
control r但是它已经执行了
control option r:它不会执行操作,而是调出Run让您选择入口的窗口,如下图所示: 实话说,这个快捷键笔者用得很少,毕竟大多数情况下就1-2个入口嘛,前两个快捷键足够用了,各位自取所需
??Debug调试
| Action Name | Key |
|---|---|
| Run | control d |
| Run current file | control shift d |
| Run… | control option d |
逻辑意义完全相同Run,这里就不多解释了。
提示:Run/Debug窗口时,按shift它可以相互切换:
Tips:debug也是一种运行状态,两者都属于运行范畴,都可以stop停止
??Stop停止
| Action Name | Key |
|---|---|
| Stop | command f2 |
| Disconnect | command f2 |
| Cancel Query | command f2 |
| … | command f2 |
停止正在运行的(过程)。main方法进程、SQL连接、Http请求、执行SQL的进程…当然喽,在IDEA最多用的是停止main方法过程,即此按钮:
值得注意的是,如果目前有多个线程正在运行,按下此快捷键时会弹出窗口,交给您决定(效果与鼠标点击右上角的停止按钮相同):
??调试快捷键
正所谓,所以熟练掌握常用的debug调试快捷键也很有用。常用按钮分布如图: 顺便说一句,我之前发表过一篇非常强大的调试技巧,可以结合本文参考效果更好:最好的IDEA debug长文?看完我佛
Step Over
| Action Name | Key |
|---|---|
| Step Over | f8 |
单步执行,单步调试。没有调试快捷键。其特点是: 遇到子函数时在子函数中,子函数完全执行,然后停止,即子函数。
Step Into
| Action Name | Key |
|---|---|
| Step Into | f7 |
也叫单步执行、单步调试。和Step Over的区别是:遇到子函数时会。
Step Out
| Action Name | Key |
|---|---|
| Step Out | shift + f8 |
当时,使用此功能可以一次性执行完,并返回到上一层函数(停住)。
Force Step Into
| Action Name | Key |
|---|---|
| Force Step Into | option + shift + f7 |
顾名思义:。Force Step Into和Step Into的区别是:前者可进入任何方法,后者只能进入自定义方法or三方库方法,官方库(如JDK库)是不能进入的。如下的toString()方法使用Step Into是进不去的,若想进入只能使用Force Step Into 老实说,大多数情况下Step Into就够用了,Force Step Into其实比较少用到。
Force Step Over
| Action Name | Key |
|---|---|
| Force Step Over | option + shift + f8 |
当在使用Step Over的时候,执行到函数时,则会停住。而若使用Force Step Over的话,无论此函数里面是否有断点,略过直接执行到下一行。
Tips:由于此功能不太常用,所以debug面板里没按钮,若需要就用快捷键触发喽
Run to Cursor
| Action Name | Key |
|---|---|
| Run to Cursor | option + f9或者force touch |
这个快捷键笔者,非常非常方便。功能含义就是字面意思:程序执行到暂停。
它绑定了两个快捷键,笔者习惯用后者:使用Mac的force touch简直不要太香,所见即所得,体验完美。
什么是force touch?点击前往
Evaluate
| Action Name | Key |
|---|---|
| Evaluate Expression… | option + f8 |
调试过程中,代码中的变量值可以在窗口中直接看到,但是,有些是看不到的,比如:中间变量、。这时候就得祭出这个神器了:Evaluate Expression。 有一定开发经验的小伙伴一定都用过这个功能,既然这么常用,以后能用快捷键来提效吗?
(效果同点击右下角的Evalute按钮)
说明:
common + enter在Mac里是个常见快捷键组合,在很多场景里都代表Run、执行、确定的含义
Quick Evaluate
| Action Name | Key |
|---|---|
| Quick Evaluate Expression | option + command + f8或者option + click |
快速执行()表达式,就像这样: 实话讲,该快捷键在实际工作中比👆🏻更常用。根据笔者的经验,调试过程中大多数情况是执行源代码里的值来查看,而需要自定义表达式的场景是比较少的,所以这个快捷键要记牢喽。
说明:该功能绑定有两个快捷键,各位按需食用,哪个顺手就用哪个呗
Resume Program
| Action Name | Key |
|---|---|
| Resume Program | option + command + R或者f9 |
继续执行程序,。换句话讲,若后面再无断点就执行结束。该快捷键,笔者常用,有“放行”之意。
丢帧功能键:Drop Frame
| Action Name | Key |
|---|---|
| Drop Frame | 暂无 |
功能直译:。使用此功能:可以到之前的堆栈,就像将当前栈帧给丢掉不要了一样,效果就是如果调试过程中“错过”了某个步骤想重来一次,使用它就可以。
在debug视窗里,可以看到当前线程的调用堆栈:
说明:只有堆栈的数量>1时,Drop Frame按钮才可使用,否则是灰色的。
这时点击一次该按钮,就会将的这帧丢弃掉,就像这样: 这样子若想再执行一次stringSize这帧就非常方便了,似乎有时光机的效果。
值得关注的是,Drop Frame这个功能IDEA默认并没有给快捷键,我觉得原因有二:
- 此功能使用上需要当心,时光机可能也倒回不了真实的现场
- 用技术语言解释为:若丢掉的那一帧对上下文状态(如全局变量、发送了消息、DB持久化了数据等等)做了更改,这种是不会撤销的。而这,很可能导致再次执行时的路径不一样,所以需要谨慎为之
- 基于1的特点,IDEA觉得该功能使用的频率不会太高,了解的程度也因人而异,所以默认就不给绑定快捷键喽
实话讲,笔者使用该功能也很少,毕竟大多数情况下重新启动新的线程来调试也不费多大事,但环境是干净有保障的。
其它功能键
IDEA作为强大的集成开发环境,对于debug调试的支持更是强大,比如:丢帧功能、lamda表达式调试、stream流调试等等。现在已是2022年,基本你想要的功能它都有,只是有些(不太常用)的默认没有绑定快捷键。
这些Action一般可通过右键、顶部菜单栏调出来,如下图: 可根据个人习惯,觉得哪些是常用就绑定为自己习惯的快捷键组合就可以了。
🍞总结
本文继续介绍了IDEA 和相关的快捷键,希望在调试的路上能助你节约时间,提高逼格,离“高手”之路更近一步。
还是补上那句话:快捷键没有任何技巧性,练就完了!下篇继续介绍Intellij IDEA的实用快捷键。那,咱们还是下次再见!
推荐阅读
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(视窗、选择篇)
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(IDEA导航篇)
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(操作系统、终端篇)
- 【方向盘】超爱的IDEA提效神器Save Actions,卸载了
- 【方向盘】利用IDEA代码审查能力,来保证代码质量
- 【方向盘】是如何高效的使用IntelliJ IDEA
我是:前25年不会写Hallo World、早已毕业的。高中时期《梦幻西游》骨灰玩家,网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖…是我不可抹灭的黑标签
- 🎓2013.07 清考、毕业答辩3次未通过、延期毕业
- 🏷2013.08-2014.07 宁夏中介公司卖二手房1年,毕业后第1份工作
- ️️🏷2014.07-2015.05 荆州/武汉,泰康人寿卖保险3月、饿了么送外卖2月,还有炸鸡排、直销等第2345份工作
- 🏷2015.08 开始从事Java开发,闯过外包,呆过大厂!擅长抽象思维,任基础架构团队负责人
- 🏷2021.08 因“双减政策”失业!历经9面,终获美团外卖L8的offer
- 🙅🏻♀️Java架构师、Spring开源贡献者、CSDN博客之星年度Top 10、领域建模专家、写作大赛1/2届评委
- 📚高质量代码、规范践行者;DDD领域驱动深度实践;即将出版书籍
《Spring奇淫巧技》
| 序号 | 专栏名称 | 简介 |
|---|---|---|
| 01 | 【方向盘】-程序人生 | 程序人生,人生程序 |
| 02 | 【方向盘】-资讯/新特性 | IDEA、JDK、Spring技术栈…新特性 |
| 03 | 【方向盘】-IntelliJ IDEA | 熟练使用IDEA就相当拥有物理外挂,助你高效编码 |
| 04 | 【方向盘】-Bean Validation | 熟练掌握数据校验,减少90%的垃圾代码 |
| 05 | 【方向盘】-日期时间 | 帮你解决JDK Date、JSR 310日期/其实 的一切问题 |
| 06 | 【方向盘】-Spring类型转换 | Spring类型转换-框架设计的基石 |
| 07 | 【方向盘】-Spring static | static关键字在Spring里的应用 |
| 08 | 【方向盘】-Cors跨域 | 关于跨域请求问题,本专栏足矣 |
| 09 | 【方向盘】-Jackson | Almost Maybe是最好的Jackson专栏 |
| 10 | 【方向盘】-Spring配置类 | 专讲@Configuration配置类,你懂的 |
| 11 | 【方向盘】-Spring技术栈 | 暂无所属小分类的,Spring技术栈大分类 |
| 12 | 【方向盘】-JDK | 暂无所属小分类的,JDK技术栈大分类 |
| 13 | 【方向盘】-Servlet | Servlet规范、Web相关内容专题 |
| 14 | 【方向盘】-Java EE | 从Java EE到Jakarta EE,30年弹指一挥间 |
| 15 | 【方向盘】-工具/提效 | 开发工具、软件工具,目标是提效 |
| 16 | 【方向盘】-Spring技术栈新特性 | Spring Framework、Spring Boot、Spring Cloud、Spring其它技术 |
| 17 | 【方向盘】-基本功 | 每个Javaer,都需要有扎实的基本功 |
| … | … | … |
| 99 | 大多数专栏均配有源代码,都在这里 |
- 源代码库地址:https://github.com/yourbatman/tech-column-learning
- CSDN主页:https://blog.csdn.net/f641385712
- 掘金主页:https://juejin.cn/user/430664289367192
- 博客园主页:https://www.cnblogs.com/yourbatman
- 个人博客主页:https://yourbatman.cn
- 个人网盘主页:https://wangpan.yourbatman.cn