专业技巧
本指南针对已经熟悉其基本功能并希望了解更多的IntelliJ IDEA用户,如果对IntelliJ IDEA还比较陌生,我们建议您在深入学习之前先阅读指南。
编码辅助
输入信息
如果想了解更多关于插入符号的信息,例如它来自哪里或者它的类型是什么,您可以按Ctrl+Q打开,此时可以看到一个带有这些详细信息的弹出窗口,如果您不需要完整的信息,那么可以使用Type info操作:它只显示所选表达式的类型,但不会占用太多的屏幕空间。
代码完成大小写敏感性
默认情况下,IntelliJ IDEA代码完成大小写敏感性仅影响您键入的第一个字母,这该策略可以在 Editor | General | Code Completion 页面的设置对话框(Ctrl+Alt+S)中更改,您可以在其中使IDE对所有字母敏感。
在这里,您还可以在输入时关闭显示建议选项,如果您希望代码完成弹出框仅在用时显示,则这是有意义的。
禁用插入符号处元素的突出显示用法
谈到您在更好地学习了IntelliJ IDEA后可能想要更改的默认值,我们不能错过的是将Highlight on Caret Movement设置在Editor | Code Editing中。如果您知道Ctrl+Shift+F7快捷键,并且不喜欢每次移动插入符号时编辑器中的突出显示出现或消失,您可以关闭插入符选项中元素的用法。
CamelHumps
默认情况下,当您在编辑器中选择任何内容时,IntelliJ IDEA对单词的大小写是不敏感的,例如您喜欢根据CamelCase选择单词,而不是选择整个单词,而是选择它的一部分,这样就可以在设置对话框的Editor | General | Smart Keys中启用此功能。
Hippie completion
IntelliJ IDEA通过Ctrl+Space提供,通过Ctrl+Shift+Space提供智能类型匹配的补全,以及通过Ctrl+Shift+Enter提供。所有这些特性都是基于对代码结构的实际理解。然而有时您可能需要一个更简单也更灵活的逻辑,它将提示当前文件甚至项目中前面使用的单词,而不考虑它们的上下文,这个功能被称为,可以通过Alt+/键获得。
Refactorings
Undo refactorings
有了IntelliJ IDEA,您在重构代码时就不需要担心后果,因为可以通过方便的Ctrl+Z快捷键调用来撤销任何事情。
提取字符串片段
IntelliJ IDEA不仅可以重构可执行代码还可以重构字符串,选择字符串的任何片段,调用Extract variable/constant/field/parameter将其作为常量提取并替换它在整个代码中的用法。
类型迁移
在重构时,通常会重命名符号,或者提取和移动代码中的语句,然而重构不仅仅是这些,例如可通过Ctrl+Shift+F6)允许您更改变量、字段、参数或方法返回值的类型(int→String、int→Long等),更新依赖代码,并解决可能的冲突。
Invert boolean
如果IntelliJ IDEA可以自动化类型迁移,为什么不能在语义上做同样的事情呢?如果要反转布尔符号的所有用法,只需使用。
代码分析
依存结构
IntelliJ IDEA允许您分析代码中组件之间的依赖程度,您需要对此保持关注,因为当存在太多依赖时,很可能会导致各种问题。操作(可通过Analyze菜单获得)将帮助您可视化和探索模块、包和类之间的依赖关系。
尽管它看起来很复杂,但它是一个非常易于使用的工具,只需要选择一个类或包,看看它在哪里被使用以及它使用了什么。
结构搜索和更换
结构搜索和替换或SSR,是非常强大的(在您学会正确使用它之后),并且可以用于静态代码分析和重构自动化,简而言之它允许您搜索代码中的特定模式,并用参数化模板替换它们,为此它配备了自己的语言来定义代码模式,本文将对此进行更详细的描述:
要访问此功能,请使用 Edit | Find | Search/Replace Structurally....如果您想创建模板或模式,请进入设置对话框,单击并在常规节点下启用结构搜索检查:
用户界面
禁用面包屑和标记树突出显示
如果使用了大量的HTML和XML并且希望避免不必要的干扰,您可以在Editor | General | Breadcrumbs上让禁用面包屑和标记树突出显示。
禁用不必要的gutter图标
Gutter是最左边的编辑器列,通常显示一些正在编辑的代码相关的有用信息。如果您觉得它有时太多了,可以设置对话框(Ctrl+Alt+S)中配置想看到的:Editor | General | Gutter Icons。
Search Everywhere
使用时可以在任何地方找到任意的文本片段:在您的代码、库、部分UI、设置(通过在设置名称前加上/),甚至动作名称中,如果经常使用这个功能,只需在弹出窗口中按下enter键就可以访问IntelliJ IDEA设置。例如这里我们正在访问编辑器设置:
如果用/plugins开始搜索查询,您可以打开和关闭它们:
其他标签包括: /appearance, /system, /inspections, /registry, /intentions, /templates, and /vcs。
Search Everywhere支持缩写,您可以使用Keymap页面的设置对话框分配一个简短的文本给任何动作。
然后通过输入以下文本从Search Everywhere调用此操作:
隐藏编辑器选项卡
当您需要关闭除当前选项卡之外的所有编辑器选项卡时,单击当前选项卡上的关闭按钮并按住Alt键关闭图标:
如果您不想看到编辑器选项卡,请转到编辑器设置的页面,并在Placement处下拉菜单中选择None。
在新窗口打开文件
有一个功能很方便,那就是在项目工具窗口中选择文件并按Shift+Enter,就可以在新窗中打开文件。
在工具栏添加停止和恢复按钮
在导航栏的工具栏中添加Stop按钮和 Resume按钮可能会很方便,您可以通过设置对话框的页面进行设置。
如果您更喜欢使用鼠标而不是键盘快捷键,那么这样您就不需要打开Debug工具窗口来管理当前的调试会话。
编辑器
与剪贴板比较
IntelliJ IDEA有一个内置的Diff查看器,用于代码、jar文件、修订甚至图像,要调用它可以选择任意一对文件并按Ctrl+D。
如果您选择了单个文件,IDE将提示选择要比较的文件,要快速比较活动编辑器与剪贴板,请选择View | Compare with Clipboard。
从历史中粘贴
说到剪贴板,IntelliJ IDEA可以跟踪您放在那里的所有内容,任何时候想要粘贴一个先前复制的项目请按Ctrl+Shift+V。
多选
是一个相对较新的、非常强大的编辑器功能,它允许您一次性快速地选择和编辑多个(相邻或不相邻的)代码片段。
简而言之事情是这样的,您可以从按Alt+J开始(然后IntelliJ IDEA选择插入符号),或者可以像往常一样选择一些东西。然后按Alt+J, IntelliJ IDEA将向前搜索当前文件,直到找到匹配的文本片段,并将其添加到选区中,您可以再次按Alt+J前进或按Alt+Shift+J后退,但请注意当搜索到文件的末尾时,它将从文件的开头重新开始。
选择完成后,您可以开始编辑所有片段,就像它们是一个片段一样。
提示:另一种克隆插入符号的方法是按Ctrl两次,然后用箭头或鼠标上下移动插入符号。
Emmet
是编写HTML、XML和CSS代码的好方法,IntelliJ IDEA支持:编写Emmet表达式并按Tab键展开它。
使用Emmet预览操作(可通过查找操作或搜索无处不在-所以请确保将其分配给方便的快捷方式)来查看结果代码的预览。
Regex
Regex功能强大,使用广泛,但有时很难正确地编写它们。IntelliJ IDEA将帮助您检查代码中的任何Regex,只需在它上面放置插入符号并按Alt+Enter来使用:
查找并使用Regex组替换
IntelliJ IDEA帮助Regex的另一个地方是,值得知道的是它支持替换表达式中的捕获组。
字节码查看器
有时候,看到程序生成的实际字节码是非常深刻的。
在IntelliJ IDEA中,您可以通过View | Show Bytecode来做到这一点。
版本控制
更改
在中,IntelliJ IDEA提供了执行各种操作的功能,其中之一是修正提交,当您想要更改上次提交并将当前更改加入其中时,它非常有用。
Shelves and patches
Shelves是一个类似于的IDE特性,但是它适用于所有的VCS:当您需要暂停当前的工作并从存储库中取出一些东西来尽快修复它,然后再继续正在做的任何工作时,它都有帮助。该特性在不提交的情况下处理本地更改的文件,因此不会再丢失更改或匆忙进行合并提交。
Patches 允许您将一组更改保存到文本文件中,然后应用于代码,这些文件可以通过电子邮件(或任何其他古老的媒体)传输。当您的飞机坠毁在荒岛上,或者陷入了没有可靠宽带连接的境地,真的需要做点什么时这个就派上了用场。
调试
Non-suspending断点
有时您可能希望在不挂起程序的情况下对特定代码行求值,可以通过使用非挂起断点来实现这一点,要创建一个表达式,只需单击按住Shift的滑槽,并在Evaluate and log字段中输入表达式。
这样您就可以更改或记录应用程序状态,而无需在项目代码中插入额外的语句,这在调试无法更改的已编译类时特别有用。
断点或字段监测点
除了上面提到的操作断点之外,您还可以使用Field观察点。当访问与该断点关联的字段时,该断点将停止执行,要创建字段观察点,只需按住Alt(对于macOS,按Ctrl+Cmd)单击 gutter。
物体标记
当您调试应用程序时,IntelliJ IDEA允许用彩色标签标记任意对象的特定实例,以便标记对象操作(在Evaluate Expression, Variables或Watches视图中可用)更容易识别。
如果您有任何用标签标记的实例,也可以在条件表达式中使用它:
自定义数据呈现器
,,和都使用一种标准的方式来呈现变量值,主要基于类的toString实现,并不是每个人都知道您是可以为任何类定义自己的自定义渲染器的,因此在中的上下文菜单中应该选择Customize Data Views。
当您正在使用的库中的一些类没有提供有意义的toString实现时,这个方法特别有用——因此您可以在库之外自己定义它。
降帧
如果想在调试时“回到过去”,您可以通过Drop Frame动作来实现,如果错误走得太远这将是一个很大的帮助,这不会恢复应用程序的全局状态,但至少会让您通过帧堆栈返回。
强制返回
另一种方法是,如果您希望跳转到未来,并强制从当前方法返回而不执行任何其他指令就请使用force return操作(要调用它,请按Ctrl+Shift+A并键入操作名称),如果该方法返回一个值,则必须指定它。
DCEVM
有时,当您对代码进行快速更改时,您可能希望立即看到它们在工作的应用程序中的行为。但不幸的是,Java HotSwap VM有很多限制:例如您不能向类添加新方法或字段并执行热插拔;在热插拔期间唯一可以更改的就是方法体。
幸运的是,有一种方法可以改变这种情况,即新的开源项目Dynamic Code Evolution VM,这是对Java HotSwap VM的修改,可以无限地支持在运行时重新加载类。
通过专用插件,在IntelliJ IDEA中使用它就很容易,当启用插件时,IDE将为您的环境提供下载DCEVM JRE的服务,然后您必须在可选jre列表中选择它。
更新应用程序
如果要在应用服务器(Tomcat、JBoss等)上运行应用程序,可以通过Ctrl+F10使用Update应用程序操作重新加载更改的类和资源吗?
工具
外部工具
IntelliJ IDEA有许多集成的开发工具,可以开箱即用。如果您需要的工具没有集成,但想通过快捷方式使用它,请转到设 Settings | Tools | External Tools并配置如何运行此工具。然后就可以通过Tools | External Tools主菜单运行这个工具了。