查看原文
其他

不可不知的IntelliJ IDEA使用小技巧(下)

学研妹 Java学研大本营 2024-01-02

介绍一些必要的IntelliJ IDEA使用小技巧,助力开发者提高生产力。

长按关注《Java学研大本营》

本指南针对已经熟悉IntelliJ IDEA基本功能并想要了解更多的开发人员。

5 编辑器

5.1 与剪贴板比较

IntelliJ IDEA内置了针对代码、jar文件、修订版本甚至图像的Diff查看器。要调用它,请选择要比较的任意一对文件,然后按Ctrl+D(OS X为Cmd+D)。如果您只选择了单个文件,则IDE将提示您选择要进行比较的文件。如果您想要快速将当前活动编辑器与剪贴板中的内容进行比较,请使用“视图→与剪贴板比较”(View → Compare with Clipboard)。

5.2 从历史中粘贴

提到剪贴板,IntelliJ IDEA 会跟踪您复制到其中的所有内容。每当您想要粘贴之前复制的内容时,只需按 Ctrl+Shift+V(OS X 为 Cmd+Shift+V)。这将打开一个弹出窗口,显示您之前复制的所有内容,您可以选择要粘贴的内容。

5.3 多重选择

多重选择是一种相对较新的强大的编辑器功能,它可以让您快速选择并同时编辑多个(相邻或不相邻)代码片段。

使用多重选择,您可以按下 Alt+J(OS X 为 Ctrl+G)开始,然后在编辑器中选择某些内容。接着,按下 Alt+J,IntelliJ IDEA 将向前搜索当前文件,直到找到匹配的文本片段,并将其添加到选择中。您可以再次按下 Alt+J 向前移动,或按下 Alt+Shift+J(OS X 为 Ctrl+Shift+G)向后移动。请注意,当搜索到文件末尾时,它将从文件开头重新开始。

选择完成后,您可以开始编辑所有片段,就好像它们是一个片段一样。

热门提示:复制插入符号的另一种方法是按Ctrl(OS X为Alt),然后使用箭头键或鼠标向上或向下移动。

5.4 Emmet

Emmet是一种编写HTML、XML和CSS代码的好方法。IntelliJ IDEA支持它:只需编写Emmet表达式,然后按Tab键展开它。您可以使用Emmet预览操作来查看结果代码的预览。

5.5 正则表达式

正则表达式是强大且广泛使用的,但有时写起来太难了。IntelliJ IDEA将帮助您检查代码中的任何正则表达式:只需将插入符号放置在其中,然后按Alt+Enter使用“检查正则表达式”意图。

5.6 使用Regex组查找和替换

IntelliJ IDEA提供使用正则表达式进行“查找和替换”的功能,而且它还支持在替换表达式中使用捕获的组。这是一个非常有用的功能,可以让您更轻松地进行大规模的代码重构。

查找和替换还可以让您从搜索中排除注释和字面量:要做到这一点,请使用齿轮图标。

5.7 字节码查看器

有时,看到程序生成的实际字节码非常有见地。在IntelliJ IDEA中,您可以通过“视图→字节码”(View → Bytecode)始终执行此操作。

6 版本控制

6.1 修订更改

在提交对话框中,IntelliJ IDEA 提供了执行各种操作的选项。其中之一是“修订更改”,当您想更改最后一次提交并将当前更改与其合并时,它非常有用。

使用“修订更改”功能,您可以将当前更改与最后一次提交合并为一个新的提交。这个新的提交会包含您对代码所做的修改以及最后一次提交的修改。这个功能可以帮助您更好地组织代码历史记录,使其更加清晰和易于理解。

6.2 暂存和补丁

Shelves是一种类似于Git Stash的IDE功能,但适用于所有VCS:当您需要暂停当前工作并从存储库中拉取某些内容以尽快修复问题,然后继续进行工作时,Shelves功能会帮助您。此功能会处理本地更改的文件而不将其提交,因此不会丢失更改或匆忙进行合并提交。

补丁允许您将一组更改保存到文本文件中,该文件可以通过电子邮件传输,然后应用于代码。当您没有可靠的宽带连接时,或者遇到其他无法访问互联网的情况时,这个功能非常有用。

7 调试

7.1 动作断点

有时,您可能想要在特定的代码行中评估某些内容,而不实际停止程序的执行。在这种情况下,您可以使用动作断点来实现。创建动作断点非常简单,只需在按住Shift键的同时单击行号区域即可。这样,您可以将任何表达式打印到控制台输出中,而不会改变代码的执行流程。这个功能在调试库或远程应用程序时特别有用。

7.2 字段断点

除了动作断点,您还可以使用字段断点。当与它关联的字段被访问时,这个断点将会停止程序的执行。要使用字段断点,只需在按住Alt键(对于Mac OS X用户是Ctrl + Cmd键)的同时单击字段所在的行号即可。

7.3 对象标记

当你调试应用程序时,IntelliJ IDEA允许你使用带有彩色标签的标记来标识特定实例的任意对象,方法是通过"标记对象"来操作(在"评估表达式"、"变量"或"观察"视图中可用)。

如果您有任何标记了标签的实例,则也可以在条件表达式中使用它。

7.4 自定义数据呈现器

"评估表达式"、"变量"、"观察"和"内联调试器"都使用一种标准方法来呈现变量值,主要基于类的toString实现。然而,并不是每个人都知道您可以为任何类定义自己的自定义呈现器。为此,您可以从"调试"工具窗口的上下文菜单中选择"自定义数据视图"。

这个功能特别有用的场景是当您使用的库中的一些类没有提供有意义的toString实现时,您可以在库之外自己定义它。

7.5 删除帧

如果您在调试过程中想要“回到过去”,可以使用“删除帧”操作。这个功能非常有用,特别是当您调试时走得太远时。尽管这并不能恢复应用程序的全局状态,但它可以通过堆栈帧将您带回到之前的状态,从而更好地理解代码的执行流程。

7.6 强制返回

反过来,如果您想跳到未来,并强制从当前方法返回而不执行任何其他指令,请使用强制返回操作。如果该方法返回一个值,则必须指定它。

7.7 DCEVM

有时候,当你快速更改代码时,你想要立即看到它们在工作应用程序中的行为。不幸的是,Java HotSwap VM有很多限制:比如,你不能添加一个新的方法或字段到一个类中并执行热交换;你实际上只能在热交换期间更改方法体。

幸运的是,有一种方法可以通过新的开源项目Dynamic Code Evolution VM来修改Java HotSwap VM的这种情况,它可以无限制地支持在运行时重新加载类。

使用这个功能在IntelliJ IDEA中很容易,只需使用专用插件即可。启用插件后,IDE将为你的环境提供下载DCEVM JRE的选项。然后你将不得不在可选JRE列表中选择它。

7.8 更新应用程序

如果你在应用程序服务器上运行你的应用程序(如Tomcat、JBoss等),你可以使用"更新应用程序"操作通过Ctrl + F10(Cmd + F10)重新加载更改的类和资源。

请注意,如果将应用程序部署为已爆炸的WAR工件,才能重新加载资源。

8 工具

8.1 外部工具

IntelliJ IDEA集成了许多开发工具,可以直接使用。如果你需要使用一个未集成的工具,但想通过快捷方式使用它,请进入“设置→工具→外部工具”(Settings → Tools → External Tools),并配置如何运行这个工具。然后你就可以通过"工具→外部工具"(Tools → External Tools)主菜单运行这个工具。

8.2 命令行启动器

如果你想要从命令行使用IntelliJ IDEA(例如打开一个项目或文件:"idea <文件或项目>"),请单击"工具→创建命令行启动器"(Tools → Create Command-Line Launcher)。

推荐书单

《深入理解Java高并发编程》

《深入理解Java高并发编程》致力于介绍Java高并发编程方面的知识。由于多线程处理涉及的知识内容十分丰富,因此介绍时必须从Java层面的讲解一直深入到底层的知识讲解。为了帮助读者轻松阅读本书并掌握其中知识,本书做了大量基础知识的铺垫。在第1篇基础知识储备中,主要介绍计算机原理、并发基础、常见语言的线程实现、Java并发入门、JUC之Java线程池、JUC之同步结构、Java NIO详解等内容。在第2篇深入Java并发原理中,详细介绍了JUC包中所有使用的原子类的原理与源码实现;非常关键且容易出错的volatile关键字的原理,从Java、JVM、C、汇编、CPU层面对其进行详细讲解;synchronized在JVM中获取锁和释放锁的流程;JUC包的核心结构——AQS的原理与源码实现,通过逐方法、逐行的解释,帮助读者彻底掌握AQS中提供的获取锁、释放锁、条件变量等操作的实现与原理。最后,详细介绍了JVM中JNI的实现原理,将Java Thread对象中的所有方法在JVM层面的实现流程进行了详细描述,以帮助读者在使用这些方法时,知道底层发生了什么,以及发生异常时如何从容解决问题。

购买链接:https://item.jd.com/13523064.html?bbtf=1

精彩回顾

不可不知的IntelliJ IDEA使用小技巧(上)

手把手教你将Java代码转换为Kotlin

使用Verilog在FPGA中实现伪随机数生成器

gRPC对比REST,在Spring Boot 中使用gRPC

20个强大的IntelliJ IDEA导航功能(下)

长按关注《Java学研大本营》
长按访问【IT今日热榜】,发现每日技术热点
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存