专业提示
最后修改时间:2023 年 9 月 8 日本指南面向已熟悉其基本功能并希望了解更多信息的 IntelliJ IDEA 用户。如果您对 IntelliJ IDEA 比较陌生,我们建议您在深入研究本指南之前先阅读“发现 IntelliJ IDEA”指南。
编码协助
类型信息
如果您想了解有关插入符号处的符号的更多信息,例如,它来自哪里或它的类型是什么,快速文档 是您的朋友。按调用它,您将看到一个包含这些详细信息的弹出窗口。如果您不需要完整信息,请改用“类型信息”操作:它仅显示所选表达式的类型,但不会占用太多屏幕空间。Ctrl0Q
代码完成区分大小写
默认情况下,IntelliJ IDEA 代码完成区分大小写仅影响您键入的第一个字母。可以在编辑器 |上的设置对话框 ( )中更改此策略。一般| 代码完成页面,您可以在其中使 IDE 对所有字母敏感。CtrlAlt0S

在这里,您还可以关闭“键入时显示建议”选项。如果您希望仅在显式调用代码完成弹出窗口时才显示它,那么这是有意义的。
禁用突出显示插入符号处元素的用法
谈到更好地学习 IntelliJ IDEA 后您可能想要更改的默认设置,我们不能错过编辑器中的插入符移动设置中的突出显示| 代码编辑。如果您知道快捷方式并且不喜欢每次移动插入符号时编辑器中突出显示的内容出现和消失,则可以关闭插入符号处元素的用法选项。CtrlShiftF7

骆驼驼峰
默认情况下,当您在编辑器中选择任何内容时,IntelliJ IDEA 对单词的大小写不敏感。如果您喜欢根据驼峰命名法选择单词,例如,不选择整个单词,而是选择其中的一部分,您可以在编辑器 |中启用此功能。一般| 设置对话框的智能键。

嬉皮完成
IntelliJ IDEA 提供基本补全功能、智能类型匹配补全功能和语句补全功能。所有这些功能都是基于对代码结构的实际理解。然而,有时您可能需要一个更琐碎但灵活的逻辑来建议当前文件甚至项目中较早使用的单词,无论其上下文如何。此功能称为“嬉皮补全”,可通过 获得。CtrlSpaceCtrlShiftSpaceCtrlShiftEnterAlt0/

重构
撤消重构
使用 IntelliJ IDEA,您在重构代码时无需担心后果,因为您始终可以通过 方便的快捷方式调用“撤消”来撤消任何操作。Ctrl0Z
提取字符串片段
IntelliJ IDEA 不仅能够重构可执行代码,还能够重构字符串文字。选择字符串的任意片段,调用提取变量/常量/字段/参数将其提取为常量并在整个代码中替换其用法。
类型迁移
重构时,您通常会重命名符号,或者提取并移动代码中的语句。然而,重构的意义远不止于此。例如,类型迁移(通过 提供)允许您更改变量、字段、参数或方法的返回值( 、等)的类型,更新相关代码并解决可能的冲突。CtrlShiftF6int → String
int → Long
反转布尔值
如果 IntelliJ IDEA 可以自动进行类型迁移,为什么不对语义进行同样的操作呢?要反转布尔符号的所有用法,只需使用反转布尔重构即可。
代码分析
依赖结构
IntelliJ IDEA 可以让您分析代码中的组件相互依赖的紧密程度,您需要密切关注这一点,因为当依赖关系过多时,很可能会导致各种问题。依赖结构操作(可通过“分析”菜单使用)将帮助您可视化和探索模块、包和类之间的依赖关系。

尽管其外观复杂,但它是一个非常易于使用的工具。只需选择一个类或包,然后查看它的使用位置和用途。
结构搜索和替换
结构搜索和替换(SSR)非常强大(在您学会正确使用它之后),并且可以用于静态代码分析和重构自动化。简而言之,它允许您搜索代码中的特定模式并用参数化模板替换它们。为此,它配备了自己的语言来定义代码模式,本文将对此进行更详细的描述。
要访问此功能,请使用编辑 | 查找| 结构性搜索/替换.... 如果您想创建模板或模式,请转到“设置”对话框,单击“编辑器 |页面”。Inspections,并在 General 节点下启用 Structural Search Inspection:

用户界面
禁用面包屑和标签树突出显示
如果您使用大量 HTML 和 XML 并且希望避免不必要的干扰,您可能需要在Editor |中禁用面包屑和标签树突出显示。一般| 面包屑。
禁用不必要的装订线图标
Gutter是最左边的编辑器列,通常显示与您正在编辑的代码相关的有用信息。如果您觉得有时太多了,您可以在“设置”对话框 ( ) 中配置您想要看到的内容:编辑器| 一般| 天沟图标。CtrlAlt0S
到处搜索
通过Search Everywhere,您可以在任何地方找到任意文本片段:在您的代码、库、UI 部分、设置(通过在设置名称前面加上/
),甚至是操作名称。如果您经常使用此功能,那么值得一提的是,您只需在弹出窗口中按右键即可访问 IntelliJ IDEA 设置。例如,我们在这里访问编辑器设置:Enter

如果您以 开始搜索查询/plugins
,您将能够打开和关闭它们:

其他标签包括/appearance
、、、、、、和。/system
_ /inspections
_/registry
/intentions
/templates
/vcs
另一个有趣的事实是 Search Everywhere 支持缩写。您可以使用“设置”对话框的“键盘映射”页面为任何操作分配短文本,

然后通过输入以下文本从 Search Everywhere 调用此操作:

隐藏编辑器选项卡
当您需要关闭除当前选项卡之外的所有编辑器选项卡时,请单击当前选项卡上的关闭图标,按住
Alt
:

如果您根本不想看到编辑器选项卡,请转到编辑器设置的“编辑器选项卡”页面,然后在“位置”下拉列表下选择“无”。
在新窗口中打开文件
一个不太容易找到但很方便的功能是在新窗口中打开文件,方法是在项目工具窗口中选择文件并按。ShiftEnter
将停止和恢复按钮添加到工具栏
将“停止”和“恢复”按钮添加到导航栏
的工具栏可能会很方便。您可以通过外观和行为 |来做到这一点。设置对话框的菜单和工具栏页面。
如果您更喜欢使用鼠标而不是键盘快捷键,这样您就不需要打开“调试”工具窗口来管理当前的调试会话。

编辑
与剪贴板比较
IntelliJ IDEA 有一个内置的 Diff 查看器,用于查看代码、jar 文件、修订版本甚至图像。要调用它,请选择任意一对文件并按。Ctrl0D
如果您选择了单个文件,IDE 将提示您选择要比较的文件。要快速比较活动编辑器与剪贴板,请选择“视图”|“剪贴板”。与剪贴板进行比较。
从历史记录中粘贴
说到剪贴板,IntelliJ IDEA 会跟踪您放在那里的所有内容。每当您想要粘贴之前复制的项目之一时,请按。CtrlShift0V
多项选择
多重选择是一个相对较新、非常强大的编辑器功能,它允许您一次快速选择和编辑多个(相邻或不相邻)代码段。
简而言之,这就是发生的事情。您可以从按开始(然后 IntelliJ IDEA 选择插入符号处的符号),也可以像平常一样选择某些内容。Alt0J
然后,按下,IntelliJ IDEA 将向前搜索当前文件,直到找到匹配的文本片段,并将其添加到选择中。您可以再次按前进或后退,但请注意,当搜索到达文件末尾时,它将从文件开头重新开始。Alt0JAlt0JAltShift0J

选择完成后,您可以开始编辑所有片段,就像它们是一个片段一样。
热门提示:克隆插入符号的另一种方法是按两次,然后用箭头或鼠标向上或向下移动插入符号。Ctrl
埃米特
Emmet是编写 HTML、XML 和 CSS 代码的好方法。IntelliJ IDEA开箱即用地支持它:编写 Emmet 表达式并按展开它。Tab
使用 Emmet 预览操作(可通过“查找操作”或“搜索无处不在”获得 - 因此请确保将其分配给方便的快捷方式)来查看生成的代码的预览。
正则表达式
正则表达式功能强大且应用广泛,但有时很难正确编写它们。IntelliJ IDEA 将帮助您检查代码中的任何正则表达式:只需将脱字符号放在其上,然后按即可使用“检查正则表达式”意图:AltEnter

查找并替换为正则表达式组
IntelliJ IDEA 为 Regex 提供帮助的另一个地方是查找和替换功能。值得注意的是,它支持替换表达式中捕获的组。

字节码查看器
有时,查看程序生成的实际字节码是非常有洞察力的。
在 IntelliJ IDEA 中,您可以通过View |执行此操作。显示字节码。另请参见Java 字节码反编译器。
版本控制
修改变更
在IntelliJ IDEA 的“提交更改”对话框中,可以执行各种操作。其中之一是Amend commit,当您想要更改上次提交并将当前更改加入其中时,它非常有用。
架子和补丁
Shelves是一个类似于Git Stash的 IDE 功能,但适用于所有 VCS:当您需要暂停当前工作并从存储库中提取某些内容以尽快修复它,然后继续处理您正在处理的任何内容时,它会有所帮助。此功能可以处理本地更改的文件而不提交它们,因此不会再丢失更改或匆忙进行合并提交。
有关更多信息,请参阅Git-Stash页面和Stashing 和 Unstashing部分。
补丁允许您将一组更改保存到文本文件中,该文本文件可以通过电子邮件(或任何其他古老的媒介)传输,然后应用于代码。当您的飞机降落在荒岛上后确实需要做某事,或者您因其他原因陷入没有可靠宽带连接的情况时,这会很有帮助。
有关更多信息,请参阅使用补丁。
调试
非暂停断点
有时您可能希望在不暂停程序的情况下评估特定代码行的某些内容。您可以通过使用非挂起断点来做到这一点。要创建一个,只需单击装订线并在“评估和记录”字段中输入表达式。Shift

这样您就可以更改或记录应用程序状态,而无需在项目代码中插入其他语句。当您调试无法更改的已编译类时,这特别有用。
现场断点或现场观察点
除了上面提到的动作断点之外,还可以使用Field watchpoints。当访问与其关联的字段时,该断点将停止执行。要创建现场观察点,只需单击装订线Alt(Ctrl+Cmd对于 macOS)。

对象标记
当您调试应用程序时,IntelliJ IDEA 允许您使用彩色标签标记任意对象的特定实例,以便通过“标记 对象”操作更轻松地进行识别(可在“评估表达式”、“变量”或 “监视”视图中使用。)
如果您有任何标有标签的实例,您也可以在条件表达式中使用它:

自定义数据渲染器
Evaluate Expression、 Variables、 Watches和 内联调试器都使用标准方法来呈现变量值,主要基于toString
类的实现。并不是每个人都知道您可以为任何类定义自己的自定义渲染器。为此,请从调试工具窗口的上下文菜单中选择自定义数据视图。

当您使用的库中的某些类未提供有意义的实现时,这尤其有用toString
,因此您可以在库外部自行定义它。
掉帧
如果您想在调试时“回到过去”,可以通过“丢帧”操作来实现。如果您错误地走得太远,这将是一个很大的帮助。这不会恢复应用程序的全局状态,但至少会让您通过帧堆栈返回。
强制返回
相反,如果您想跳转到未来,并强制从当前方法返回而不执行任何更多指令,请使用“强制返回”操作(要调用它,请按并键入操作名称)。如果该方法返回一个值,您必须指定它。CtrlShift0A
DCEVM
有时,当您快速更改代码时,您希望立即查看它们在工作应用程序中的行为方式。不幸的是,Java HotSwap VM 有很多限制:例如,您不能向类添加新方法或字段并执行热交换;在热插拔期间您唯一可以实际更改的是方法主体。
幸运的是,有一种方法可以通过新的开源项目 Dynamic Code Evolution VM 来改善这种情况,该项目是对 Java HotSwap VM 的修改,可以无限制地支持在运行时重新加载类。
通过专用插件,在 IntelliJ IDEA 中使用它很容易。当您启用该插件时,IDE 将提示您下载适合您的环境的 DCEVM JRE。然后您必须在替代 JRE 列表中选择它。
更新应用程序
如果您在应用程序服务器(Tomcat、JBoss 等)上运行应用程序,您可以通过.CtrlF10
有关详细信息,请参阅更新应用程序服务器上的应用程序。
工具
外部工具
IntelliJ IDEA 集成了许多开箱即用的开发人员工具。如果您需要的工具未集成,但您想通过快捷方式使用它,请转至设置| 工具| 外部工具,并配置如何运行该工具。然后您将能够通过“工具”|“工具”运行此工具。外部工具主菜单。
有关更多信息,请参阅外部工具。
感谢您的反馈意见!