因为本节的内容是介绍使用 IntelliJ IDEA 的一些专业技巧,是为了帮助已经熟悉 IntelliJ IDEA 基本功能的用户来了解并掌握有关 IntelliJ IDEA 的更多信息,所以在学习本节内容之前您需要对 IntelliJ IDEA 有了一定的了解。
如果您对IntelliJ IDEA相对较新,我们建议您先阅读IntelliJ IDEA的使用。
如果你想要更多的关于符号的信息,例如从哪里或它的类型是什么, 快速文档可以很好的帮到您,您可以按下 Ctrl+Q 来调用它,然后你会看到一个包含这些细节的弹出窗口。如果您不需要完整信息,请改为使用 “Type Info” 操作:它仅显示所选表达式的类型,但不占用大量的屏幕空间。
默认情况下,IntelliJ IDEA 代码完成区分大小写仅影响您键入的第一个字母。这个策略可以在 “设置/首选项” 对话框中更改, Editor | General | Code Completion,所以你可以使 IDE 对所有的字母敏感,或者使它对所有的情况不敏感,这是基于什么更适合你的喜好。
热点提示: 在这里您也可以关闭 Autopopup 代码完成选项。如果您希望代码完成弹出菜单仅在显式调用时显示,这样的设置是有意义的。
谈到默认值,您可能想要在更好地学习 IntelliJ IDEA 后对其进行改变,我们不能错过在 "设置/首选项" 对话框的 Editor | General 页存在的 “在插入符号时突出显示元素” 的用法。如果您知道 Ctrl+Shift+F7 快捷方式,并且不喜欢编辑器中的突出显示用法,每次只需移动插入符号即可显示并消失,则不需要此选项。
默认情况下,当您在编辑器中选择任何内容时,IntelliJ IDEA 对单词的大小写不敏感。如果您喜欢根据 CamelCase 选择单词,例如,选择其中的一部分,而不是选择整个单词,您可以在 "设置/首选项" 对话框中的 Editor | General | Smart Keys 中启用该功能。
IntelliJ IDEA 通过 Ctrl+Space 提供 Basic completion,通过 Ctrl+Shift+Space 提供Smart completion,和通过 Ctrl+Shift+Enter 提供 Statement completion。所有这些功能都是基于对代码结构的实际理解。然而,有时候,您可能需要一个更为微不足道的灵活逻辑,可以提示当前文件中甚至项目中使用的单词,无论其上下文如何。此功能叫 Hippie completion 并且通过 Alt+Slash 调用。
使用 IntelliJ IDEA,您无需担心重构代码时的后果,因为您可以随时通过便捷的 Ctrl+Z 快捷方式调用 Undo 来撤消任何内容。
IntelliJ IDEA不仅可以重构可执行代码,还可以重写字符串。选择字符串的任何片段,调用提取变量/常量/字段/参数以将其作为常量提取,并在整个代码中替换其用法。
当您重构时,通常会重新命名符号,或者在代码中提取和移动语句。然而,还有更多的重构,而不仅仅是这样。例如,类型迁移(可通过 Ctrl+Shift+F6 提供)允许您更改变量,字段,参数或方法的返回值(int → String,int → Long,等)的类型,更新相关的代码,并解决可能发生的冲突。
如果 IntelliJ IDEA 可以自动进行类型迁移,为什么不对语义做相同的操作?如果要反转一个布尔符号的所有用法,只需使用反转布尔重构。
IntelliJ IDEA 可以让您分析代码中组件的紧密程度如何,您需要关注这一点,因为当存在太多的依赖项时,可能会导致各种各样的 问题。 依赖关系矩阵操作(可通过 “分析” 菜单提供)将帮助您可视化并探索模块,软件包和类之间的依赖关系。
尽管复杂的外观,它是一个非常易于使用的工具。只需选择一个类或包,看看它在哪里使用和使用它来做什么。
结构搜索和替换(SSR)是相当强大的 (在您学会正确使用它之后),并且可以用于静态代码分析和重构自动化。简而言之,它允许您在代码中搜索特定的模式,并使用参数模板替换它们。为此,它配备了自己的语言来定义代码模式,本文将对此进行更详细的描述。
要访问此功能,请使用 "Edit | Find | Search/Replace Structurally....”。如果要创建模板或模式,请转到 "设置/首选项" 对话框, 单击 Editor | Inspections页面,并在 General node 下启用 Structural Search Inspection:
如果您使用了大量的 HTML 和 XML,并希望避免不必要的干扰,您可能需要在 Editor | General | Appearance 中禁用面包屑和标签树突出显示。
最左侧的编辑器列 Gutter 通常显示与您正在编辑的代码相关的有用信息。如果您觉得有时只是太多,您可以在 “设置/首选项” 对话框中配置要查看的内容 Editor | General | Gutter Icon。
还有一件事可能是烦人的,就是每次在插入符号处有意图时,编辑器中出现的意图灯泡。禁用它有点困难:您需要手动编辑您的 <IntelliJ IDEA preferences folder>/options/editor.xml,并添加以下行:
<option name="SHOW_INTENTION_BULB" value="false" />
4.使用Search Everywhere
使用 Search Everywhere, 您可以从字面上找到任意文本片段: 在代码、库、UI 的某些部分、设置 (通过将设置名称与 #),甚至是操作名称。如果你经常使用这个功能,那就值得知道,你可以通过在弹出窗口中按 Enter 键来访问 IntelliJ IDEA 的设置。例如,我们在这里访问编辑器设置:
如果您开始搜索查询#plugins,您可以打开和关闭它们:
其它标签包括 #appearance,#system,#inspections, #registry,#intentions,#templates和#vcs。
另一个有趣的事实是,Search Everywhere 支持缩写。您可以使用 “设置/首选项” 对话框的 “Keymap” 页面为任何操作分配一个短文本,然后通过输入以下文本从 “Search Everywhere” 中调用此操作:
当您需要关闭除当前选项卡之外的所有编辑器选项卡时,点击 “X” 图标并按住 Alt 键来关闭当前标签:
如果您不想看到编辑器标签,请转到 编辑器选项卡 页面的编辑器设置/首选项并在展示位置的下拉菜单中选择无。
一个不是很容易找到的功能,但也是有用的,它通过在 "Project Tool Window" 中选择一个文件并单击 "Shift + Enter" 在新窗口中打开。
路径完成可以帮助您加快文件,文件夹等的选择。在 "项目结构" 对话框中添加新的 SDK 或指定应用程序服务器主目录时,这很有用。
当您开始输入路径时,请按 Ctrl+Space 以调用建议列表:
将 Stop和Resume按钮添加到工具栏可能很方便导航栏的操作。你可以通过"设置/首选项" 对话框的 Appearance and Behavior | Menus 和 Toolbars 页面做到这点。
如果您喜欢使用鼠标而不是键盘快捷键,则不需要打开调试工具窗口来管理当前的调试会话。
IntelliJ IDEA有一个内置的 Diff 查看器,用于代码、jar文件、修订甚至于图像。要调用它,请选择任意一对文件,然后按 Ctrl+D。
如果您选择了单个文件,IDE 将提示您选择要比较的文件。要快速比较活动编辑器与剪贴板,请选择 View | Compare with Clipboard。
说到剪贴板,IntelliJ IDEA 跟踪你在那里的一切。每当您要粘贴以前复制的项目之一时,请按 Ctrl+Shift+V。
多项选择是一个相对较新的非常强大的编辑器功能,可以让您快速选择和编辑多个(相邻或者不)代码片段。
简而言之,这里会发生什么。你要么开始按 Alt+J (然后 IntelliJ IDEA 在插入处选择一个符号),或者你可以按照通常的方式选择一些东西。
然后,按 Alt+JIntelliJ IDEA 将向前搜索当前文件,直到找到匹配的文本,并将其添加到选择中。您可以再次按下 Alt+J 以向前或 Shift+Alt+J 以返回,但请注意,当搜索到达文件结尾时,它将从文件的开头重新开始。
选择完成后,您可以开始编辑所有片段,就像它们一样。
提示:克隆插入符号的另一种方法是按 Ctrl (MacOS 中是 Alt)两次,然后用箭头或简单的鼠标向上或向下移动插入符号。
如果你不知道, Emmet 是编写 HTML,XML 和 CSS 代码的好方法。IntelliJ IDEA 支持它开箱即用:只需编写一个 Emmet 表达式,然后按 Tab 来展开它。
使用 Emmet 预览操作(可在“查找操作”或“随处搜索”中使用 - 因此请确保将其分配给方便的快捷方式),以查看生成的代码的预览。
正则表达式是强大且广泛使用的,但有时它们写得很正确太难了。IntelliJ IDEA 将帮助您检查代码中的任何正则表达式:只需将插入符放在其中,然后按 Alt+Enter 使用 检查正则表达式意图:
IntelliJ IDEA 帮助 Regex 的另一个地方就是 查找和替换功能。值得一提的是,它支持替换表达式中的捕获组。
查找和替换也可以从搜索中排除评论和文字:要做到这一点,请使用 “齿轮” 图标
有时看到程序生成的实际字节码是非常的 有见地。
在 IntelliJ IDEA 中,您可以随时通过此操作 View | Show Bytecode 达到。
在 提交更改对话框 中 IntelliJ IDEA 提供执行各种操作。其中之一是修改提交,当您想要更改最后一个提交并加入您当前的更改时,这是有用的。
Shelves 是类似于 Git Stash 的 IDE 功能,但适用于所有 VCS:当您需要暂停当前工作并从存储库中提取某些内容以修复它时,帮助您,然后恢复正在进行的任何工作。此功能无需提交本地更改的文件,因此不会再丢失更改或仓促合并提交。
请参阅页面 Git-Stach 和 Stashing and Unstashing 部分了解更多详情。
补丁程序允许您将一组更改保存到可通过电子邮件(或任何其他古老媒体)传输的文本文件,然后应用于代码。当你的飞机坠毁在沙漠的岛屿上真的需要做某事时,这是非常有帮助的,或者你以某种方式让自己处于没有可靠的宽带连接的情况下。
有时, 您可能需要在特定的代码行中进行评估, 而无需实际停止。可以使用方法断点来执行此项。要创建一个, 只需单击 gutter 按住 Shift。
这样,您可以将任何表达式打印到输出,而无需更改代码。这在调试库或远程应用程序时尤其有用。
除了上述动作断点之外,您还可以使用 字段观察点。当与其关联的字段被访问时,该断点将停止执行。要创建现场观察点,只需点击 gutter 按住 Alt(macOS 中使用 Ctrl+Cmd)。
当您调试应用程序时,IntelliJ IDEA 允许您使用彩色标签标记任意对象的特定实例,以便通过该标签轻松识别 标记对象 动作(可在评估表达, 变量或手表的意见。)
如果你有任何标签标签的实例,你也可以在条件表达式中使用它:
评估表达,变量, 手表和 内联调试器 都使用标准方式来呈现变量值,主要是基于toString类的实现。不是每个人都知道您可以为任何类定义自己的自定义渲染器。为此,选择 从上下文菜单中自定义数据视图调试 工具窗口。
当您使用的库中的某些类不提供有意义的toString实现时,这是非常有用的,因此您可以在库之外定义它。
如果您想在调试时“及时回来”,可以通过“丢帧”操作来执行此操作。如果你错误地走得太远,这是一个很大的帮助。这不会恢复您的应用程序的全局状态,但至少会让您回到一堆帧。
绕过的方式,如果你想跳到未来,强制从当前方法返回,而不执行任何更多的指令,请使用 强制返回动作(调用它,按键Ctrl+Shift+A并输入动作名称)。如果该方法返回一个值,则必须指定它。
有时,当您快速更改代码时,您希望立即看到它们将如何在工作的应用程序中运行。不幸的是,Java HotSwap VM有很多限制:您不能说,向类添加新的方法或字段,并执行热插拔; 在热插拔中唯一可以改变的是方法体。
请参阅各节 重新加载类和HotSwap 的详细信息。
幸运的是,有一种方法可以用新的开放源代码项目Dynamic Code Evolution VM来修改这种情况,这是一个Java HotSwap VM的修改,可以在运行时重新加载类,不受支持。
在IntelliJ IDEA中使用它很容易与专用 插件。启用插件后,IDE将为您提供为您的环境下载DCEVM JRE。那么你必须在替代JRE列表中选择它。
如果您在应用程序服务器(例如Tomcat,JBoss等)上运行应用程序,则可以使用Update应用程序操作重新加载更改的类和资源 Ctrl+F10。
IntelliJ IDEA有许多开发人员工具集成和开箱即用。如果您需要的工具不是集成的,但是您希望通过快捷方式使用它,请转到 设置/首选项| 工具| 外部工具,并配置如何运行此工具。然后你可以通过这个工具来运行这个工具 工具| 外部工具主菜单。