• 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(运行/调试篇)


    在这里插入图片描述

    扔掉鼠标,提高效率。
    本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“专栏列表”获取全部小而美的原创技术专栏

    你好,我是方向盘(YourBatman)

    📚前言

    本系列上篇文章介绍了IDEA里关于视窗、选择方面的快捷键,熟练掌握可以快速找到、定位到自己想要的代码。

    本文将继续IDEA在Run运行、Debug调试方面的快捷键。

    🚩所属专栏

    🚩相关下载

    🚩版本约定

    • Mac OS 12.4
    • iTerm2 3.4.15(zsh 5.8)
    • IntelliJ IDEA 2022.1.3

    ✍正文

    🌈IntelliJ IDEA快捷键

    🚀Run/Debug

    • 在运行方式下,程序执行,但不会暂挂或检查执行
    • 在调试方式下,程序执行,但可暂挂执行和继续执行、可检查变量,还可对表达式求值

    🚩Run运行

    Action NameKey
    Runcontrol + r
    Run current filecontrol + 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 NameKey
    Runcontrol + d
    Run current filecontrol + shift + d
    Run…control + option + d

    逻辑含义完全同Run,这里就不做过多解释了。

    有个小技巧:Run/Debug窗口选择入口时,按shift是可以互相切换的:
    在这里插入图片描述

    Tips:debug也是一种运行态,从状态来讲二者都属于运行范畴,都可以stop停止

    🚩Stop停止

    Action NameKey
    Stopcommand + f2
    Disconnectcommand + f2
    Cancel Querycommand + f2
    command + f2

    停止正在运行的(进程)。比如:main方法进程、SQL连接、Http请求、执行SQL的进程…当然喽,在IDEA里用的最多还是停止main方法进程,也就是这个按钮:
    在这里插入图片描述

    值得注意的事,若当前有多个线程正在运行,那么按下此快捷键时会弹出窗口,交由你决策(效果同鼠标点击右上角的停止按钮):
    在这里插入图片描述

    🚩调试快捷键

    正所谓三分开发,七分调试,所以熟练掌握常用的debug调试快捷键,也是用处大大滴。常用按钮位置分布如图:
    在这里插入图片描述
    对了,之前发过一篇“很强悍”的调试技巧,可结合本文一起参阅效果更佳:最好的IDEA debug长文?看完我佛了

    Step Over
    Action NameKey
    Step Overf8

    单步执行、单步调试。是使用最频繁的调试快捷键,没有之一。它的特点是: 遇到子函数时不会进入子函数内,而是将子函数整个执行完再停止,也就是把子函数整个作为一步

    Step Into
    Action NameKey
    Step Intof7

    也叫单步执行、单步调试。和Step Over的区别是:遇到子函数时会进入子函数内

    Step Out
    Action NameKey
    Step Outshift + f8

    已经单步执行到子函数内时,使用此功能可以一次性执行完子函数余下部分,并返回到上一层函数(停住)。

    Force Step Into
    Action NameKey
    Force Step Intooption + shift + f7

    顾名思义:强制进入。Force Step Into和Step Into的区别是:前者可进入任何方法,后者只能进入自定义方法or三方库方法,官方库(如JDK库)是不能进入的。如下的toString()方法使用Step Into是进不去的,若想进入只能使用Force Step Into
    在这里插入图片描述
    老实说,大多数情况下Step Into就够用了,Force Step Into其实比较少用到。

    Force Step Over
    Action NameKey
    Force Step Overoption + shift + f8

    当在使用Step Over的时候,执行到函数时若内部有断点,则会停住。而若使用Force Step Over的话,无论此函数里面是否有断点,略过直接执行到下一行。

    Tips:由于此功能不太常用,所以debug面板里没按钮,若需要就用快捷键触发喽

    Run to Cursor
    Action NameKey
    Run to Cursoroption + f9或者force touch

    这个快捷键笔者巨喜欢,非常非常方便。功能含义就是字面意思:程序执行到光标位置暂停。

    它绑定了两个快捷键,笔者习惯用后者:使用Mac的force touch简直不要太香,所见即所得,体验完美。

    什么是force touch?点击前往

    Evaluate
    Action NameKey
    Evaluate Expression…option + f8

    调试过程中,代码中的变量值可以在窗口中直接看到,但是,有些是看不到的,比如:中间变量、表达式计算值。这时候就得祭出这个神器了:Evaluate Expression
    在这里插入图片描述
    有一定开发经验的小伙伴一定都用过这个功能,既然这么常用,以后能用快捷键来提效吗?

    哦对了,当你在输入框里写好语句想要执行时,也无需使用鼠标点击右下角的Evaluate按钮,按common + enter即可执行(效果同点击右下角的Evalute按钮)

    说明:common + enter在Mac里是个常见快捷键组合,在很多场景里都代表Run、执行、确定的含义

    Quick Evaluate
    Action NameKey
    Quick Evaluate Expressionoption + command + f8或者option + click

    快速执行(光标选中的)表达式,就像这样:
    在这里插入图片描述
    实话讲,该快捷键在实际工作中比👆🏻更常用。根据笔者的经验,调试过程中大多数情况是执行源代码里已经存在的表达式的值来查看,而需要自定义表达式的场景是比较少的,所以这个快捷键要记牢喽。

    说明:该功能绑定有两个快捷键,各位按需食用,哪个顺手就用哪个呗

    Resume Program
    Action NameKey
    Resume Programoption + command + R或者f9

    继续执行程序,直到遇到下一个断点。换句话讲,若后面再无断点就执行结束。该快捷键,笔者常用,有“放行”之意。

    丢帧功能键:Drop Frame
    Action NameKey
    Drop Frame暂无

    功能直译:丢(栈)帧。使用此功能:可以回退到之前的堆栈,就像将当前栈帧给丢掉不要了一样,效果就是如果调试过程中“错过”了某个步骤想重来一次,使用它就可以重新进入执行

    在debug视窗里,可以看到当前线程的调用堆栈:
    在这里插入图片描述

    说明:只有堆栈的数量>1时,Drop Frame按钮才可使用,否则是灰色的。

    这时点击一次该按钮,就会将栈顶的这帧丢弃掉,就像这样:
    在这里插入图片描述
    这样子若想再执行一次stringSize这帧就非常方便了,似乎有时光机的效果。

    值得关注的是,Drop Frame这个功能IDEA默认并没有给快捷键,我觉得原因有二:

    1. 此功能使用上需要当心,时光机可能也倒回不了真实的现场
      1. 用技术语言解释为:若丢掉的那一帧对上下文状态(如全局变量、发送了消息、DB持久化了数据等等)做了更改,这种是不会撤销的。而这,很可能导致再次执行时的路径不一样,所以需要谨慎为之
    2. 基于1的特点,IDEA觉得该功能使用的频率不会太高,了解的程度也因人而异,所以默认就不给绑定快捷键喽

    实话讲,笔者使用该功能也很少,毕竟大多数情况下重新启动新的线程来调试也不费多大事,但环境是干净有保障的。

    其它功能键

    IDEA作为强大的集成开发环境,对于debug调试的支持更是强大,比如:丢帧功能、lamda表达式调试、stream流调试等等。现在已是2022年,基本你想要的功能它都有,只是有些(不太常用)的默认没有绑定快捷键。

    这些Action一般可通过右键、顶部菜单栏调出来,如下图:
    在这里插入图片描述
    可根据个人习惯,觉得哪些是常用就绑定为自己习惯的快捷键组合就可以了。

    🍞总结

    本文继续介绍了IDEA Run运行Debug调试相关的快捷键,希望在调试的路上能助你节约时间,提高逼格,离“高手”之路更近一步。

    还是补上那句话:快捷键没有任何技巧性,练就完了!下篇继续介绍Intellij IDEA的实用快捷键。那,咱们还是下次再见!

    推荐阅读

    在这里插入图片描述

    我是方向盘(YourBatman):前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 staticstatic关键字在Spring里的应用
    08【方向盘】-Cors跨域关于跨域请求问题,本专栏足矣
    09【方向盘】-JacksonAlmost Maybe是最好的Jackson专栏
    10【方向盘】-Spring配置类专讲@Configuration配置类,你懂的
    11【方向盘】-Spring技术栈暂无所属小分类的,Spring技术栈大分类
    12【方向盘】-JDK暂无所属小分类的,JDK技术栈大分类
    13【方向盘】-ServletServlet规范、Web相关内容专题
    14【方向盘】-Java EE从Java EE到Jakarta EE,30年弹指一挥间
    15【方向盘】-工具/提效开发工具、软件工具,目标是提效
    16【方向盘】-Spring技术栈新特性 Spring Framework、Spring Boot、Spring Cloud、Spring其它技术
    17【方向盘】-基本功 每个Javaer,都需要有扎实的基本功
    99源代码库大多数专栏均配有源代码,都在这里
  • 相关阅读:
    Web 前端程序员通常具备哪些技能和经验?
    Spring Boot集成ElasticsearchRepository
    用于非线性时间序列预测的稀疏局部线性和邻域嵌入(Matlab代码实现)
    2022年加氢工艺考试题模拟考试平台操作
    数据结构——线性表
    网络部署思路、路由器以及静态路由协议
    Spring Boot Configuration Annotation Processor not configured 问题解决
    【20220901】What Happened When We All Stopped?
    2021JavaScript面试题(最新)不定时更新(2021.11.6更新)
    淘宝API接口,item_get-获得淘宝商品详情(淘宝商品详情 API 返回值说明)
  • 原文地址:https://blog.csdn.net/f641385712/article/details/123860194