IntelliJ IDEA 的 20 个代码自动完成的特性

http://www.oschina.net/question/12_70799

在这篇文章中,我想向您展示 IntelliJ IDEA 中最棒的 20 个代码自动完成的特性,可让 Java 编码变得更加高效。对任何集成开发环境来说,代码的自动完成都是最最重要的一项功能,它根据你输入的内容进行预判并帮你自动完成你想输入的代码,有时候甚 至都不知道自己想要输入什么,例如一些类名、成员、方法或者是其他方面的内容。

IntelliJ IDEA 中的代码自动完成的功能之所以能让我如此印象深刻,原因是 IDEA 真的理解你的代码以及你当前所在的上下文。接下来我们将这些最重要的特性进行简单的说明,这些特性让 IDEA 显示出比其他 IDE 更棒的表现。

即刻完成 Instant completion

第一个也是最吸引我的就是“即刻完成”特性,不同于其他 IDE,IDEA 可在任意地方提供这个功能,而不只是当你要访问某个类的成员时。只需要输入单词的首字母,IntelliJ IDEA 就会立即给出最相关的、最适合此处代码编辑需要的选项共你选择。

想要了解“即刻完成”是多么的有效,你可以浏览这个 演示视频.

类型感知的自动完成 Type-aware completion

另一个特性同样打破了常规的代码自动完成的方法,称为:智能自动完成。你可能已经知道,IDEA 中包含不止一种自动完成的功能,包括 基本自动完成 ?Space智能自动完成 ??Space.

当你呼出 智能自动完成 时,它会将建议列表中的不适用的条目过滤掉,只显示可用的类、变量、属性或者方法,这个提升了性能而且可以避免不必要的错误,如果你试用下这个功能,你肯定会时刻想到它。


静态属性和方法 Static fields and methods

就如同刚才我说的,IDEA 一直走在你的想法之前。如果你不记得一些静态成员的类名,你只需要开始输入静态成员的名称,然后调用两次“自动完成”,IDEA 会给你提供正确的可供选择的列表,甚至是通过静态 import 进来的方法,如果你调用 Intention action ?? 的话.

再一次说明,如果你使用 智能自动完成, 它将只提供可正确使用的选项。

链式自动完成 Chain completion

接下来的一个可让你更多的提升编码效率的自动完成特性,名为 链式自动完成(Chain completion). 如果你需要输入这样的调用方法 getModule().getProject(),只需要使用两次 Smart completion 即可。这种情况下 IDEA 将扫描变量、属性和方法,以及在当前上下文中的可见性,并为你提供可用的选择。

你可能知道 Eclipse Juno 有一个名为 Code Recommenders
的插件,这是一个相当有意思的插件提供了这里说到的功能,但它的工作方式完全不同,只提供 Eclipse SDK API 类中的建议,而 IDEA
为你提供你代码中所有类的自动完成建议。

数据流分析 Data flow analysis

IntelliJ IDEA 被称为是最智能的 Java IDE 的原因是,IDEA
提供的各种功能都是基于对你代码分析的结果,数据流分析就是其中一项。IDEA
分析数据流以便猜测运行环境中的变量类型,并提供基于这个类型的自动完成以及自动增加类的强制类型转换。


常量自动完成 Constants completion

很多 API 使用 Java 的原始类型而不是枚举类型来定义常量,IDEA 能分析出项目中的这些常量,并在自动完成的建议列表中提供选择,快速输入。


父类自动完成 Super completion

你可能已经注意到了,要调用一个有很多参数的父类构造函数挺烦人,而 IDEA 能理解你想要的并提供建议列表供选择。


语句自动完成 Statements completion

IntelliJ IDEA 另外一个智能的特性就是 自动完成语句 Complete statement ???, 可以帮你完成正在输入的语句的剩余部分,自动增加漏掉的大括号小括号和必要的格式化处理。

你可能认为这是一个很小的特性,但你会很惊奇的发现当你习惯后,它节省你很多时间。

想试试这个特性可在代码中尝试输入 if 然后按 ???. 你也可以在从建议列表中选择的时候使用。

参数信息 Parameter info

我相信大多数的 IDE 在你调用某个方法或者构造函数时都提供了参数的建议,然后如何提供的也是非常重要。

IntelliJ IDEA 会显示每个重载方法或者构造函数的参数信息,并高亮其中最佳匹配的参数类型。这帮你根据输入和期望的内容来选择合适的方法。

你也可以通过 ?P 来显示参数信息。

快速定义 Quick definition

另外一个你可能不知道的特性就是 快速定义 Quick definition ??I. 它会弹窗显示建议列表中的方法定义的内容,更多的时候,方法的定义比文档更有用,特别是你不确定要使用哪个方法时。


从自动完成中排除 Exclude from completion

我肯定每个人都至少会碰到一次这种情形,你从来不用的某个反复总是反复的出现在自动建议列表中。例如 com.sun 或者是 java.awt 包。

IntelliJ IDEA 可帮你排除掉这些选项,只需要在要排除的选项中调用 Intention ?? 并确认,你也可以在 Settings 中重新找回这些信息。


其他语言注入 Injected languages

接下来的这个就不管是代码自动完成那么简单,这个功能完全可以开一篇新的文章详细介绍,但这里只介绍它跟代码自动完成有关的部分。

其他语言注入 Language injection 是 IntelliJ IDEA 带来的高级代码助手,可对 Java 代码中字符串的表达式进行自动完成。这些表达式可以是 SQL, JPQL, XPath expression, HTML, CSS, JavaScript 片段等任何语言。

在 IntelliJ IDEA 提供这些表达式的自动完成功能前,你必须指定对应的语言,你可在字符串上调用 Intention action ?? 来设置,然后方可使用。

例如你在 IDEA 中定义了一个数据源,你将可使用基于表名的 SQL 表达式的自动完成,该 IDE 会分析项目中所有的文件并提供所支持语言的高级自动完成功能。

使用 Tab 键的自动完成 Completion with Tab

另外一个特性就是 Сompletion with Tab,也就是使用 Tab 键来实现自动完成,当你选择建议列表中的某个条目后点击 ?, 选中的内容将会覆盖光标标识符,而不是插入。这在编辑如文件名这样的标识符片段时是很有用的。

否定布尔值结果 Negating boolean results

并不是所有人都知道,当你从建议列表中使用 ! 来选择一个布尔值的选项时,IntelliJ IDEA 会自动添加所选项的的非值(例如本来是true的变成false)。

中间匹配 Middle matching

另外一个高效的方法就是 中间匹配 Middle matching. 意思是当你在刚开始要输入某个标识符时,IntelliJ IDEA 就会为你提供可供选择的建议列表,这个特性能显著提升编码效率,特别是当你只记住某个名称的一部分时。


大小写敏感设置 Case sensitivity settings

正如你可能已经知道的,代码完成常用的方法就是使用驼峰法则来根据您的输入去匹配相应的类名。虽然你需要输入至少一个大小字母来给 IDE
一些线索提示。而 IntelliJ IDEA 改进了这个法则,它不要求一定是大小字母,也可以是小写的,也就是说你没必要在每次使用这个功能时按 ?

默认 IntelliJ IDEA 对大小写是敏感的,你可以在 Settings 修改此项设置。

资源属性(properties)、文件名和资源的自动完成

IDEA 还可判断当前正在使用一些加载资源的方法,并给出可供选择的资源列表。


一些在非 Java 文件中的类名自动完成 Class name completion in non-Java files

IntelliJ IDEA 同样还提供一些非 Java 文件,如 XML 配置文件中的类名自动完成。


其他地方的自动完成 Completion in other places

另外一个你在别的 IDE 中很难见过的自动完成功能是,它不只是在代码编辑器中,还可用在调试器、表达式模拟、监视、文件选择器、搜索输入等等诸多地方使用。

表达式评估和监视工具中的自动完成这个功能是非常有价值的。

总结

我希望这篇文章能帮你更好的理解 IntelliJ IDEA 的代码自动完成特性,并从中受益。

你可以通过 Help Productivity Guide 来了解更多的自动完成的类型以及 IDEA 已经帮你节省了多少时间(这个有点意思)

时间: 2024-08-24 13:21:20

IntelliJ IDEA 的 20 个代码自动完成的特性的相关文章

“全栈2019”Java第五章:IntelliJ IDEA代码自动提示

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第五章:IntelliJ IDEA代码自动提示 下一章 "全栈2019"Java第六章:注释 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&quo

20种源代码测试工具

本文推荐并点评了软件开发测试中经常使用的20种源代码测试工具,能够帮助大部分人解决测试问题. AQtime--该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息,并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器.图形化的调用层次结构一直到源代码浏览等内容 AdaTEST--一款针对于Ada应用程序的覆盖率测试.静态测试和动态测试工具 BoundsChecker--为C++开发者而生的运行时错误检测和调试工具,支持C/C++..Net.

Eclipse Android 代码自动提示功能

对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置为启动项 2.添加引用 3.添加WebManage文件夹与Login.aspx文件 4.添加登陆页面HTML代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx

使用 Entity Framework Core 时,通过代码自动 Migration

使用 Entity Framework Core 时,通过代码自动 Migration 一 介绍 在使用 Entity Framework Core (下面就叫 EF Core 吧)进行开发时,如果模型有变动,我们要在用 EF Core 提供的命令行工具进行手工迁移,然后再运行程序.但是为了效率,我想能不能在程序的入口处进行 Migration 呢?从个人经验来说应该是可以,因为 EF Tool 虽然提供了 CLI 但是它最终也是被程序解析这些命令.下面就开始分析,如何通过代码进行 Migrat

手写代码自动实现自动布局,即Auto Layout的使用

手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIView的一个属性设置,这是因为如果我们用Interface Builder,勾选Ues Autolayout,这时autoresizingMask就会被Auto Layout 取代,在手写代码时,我们就需要手动控制,代码如下 [_shadow setTranslatesAutoresizingMask

IDEA里如何实现代码自动提示?(图文详解)

不多说,直接上干货! 前言 使用eclipse都习惯使用快捷键ALT+/ 来代码自动提示,后来使用IntelliJ Idea这个快捷键并不管用,十分不便,这里记录如何使更改idea代码自动提示快捷键. 首先,我这里,先复制Default,怎么做? 见 然后,我这里是以Default的复制(Default cpoy)为例 IDEA里的Keymap(Default.Default for GNOME.Default for KDE.Default for XWin.Eclipse.Eclipse(M

使用mybatis-plus-generator进行代码自动生成

为了解放程序员的双手,减少重复性代码的编写,推荐使用插件:mybatis-plus-generator 进行代码自动生成.下面我将详细介绍通过 mybatis-plus-generator 插件自动生成 controller.service.mapper.serviceImpl相关代码. 项目工程目录总览如下: 1. 使用 idea 创建 maven 项目,引入相关依赖,项目pom文件如下所示: <?xml version="1.0" encoding="UTF-8&q

纯代码 自动屏幕适配iPhone

代码判断,你也可以用xib自带的自动布局选项 我是用的纯代码写的 纯代码 自动屏幕适配iPhone,布布扣,bubuko.com

QT Creator 代码自动补全

QT Creator 代码自动补全 用QT Creater编程,如果没有自动补全是很痛苦的事情,于是便查阅了QT的文档,发现CTRL+SPACE是自 动补全的快捷键;但是在 Creater里使用居然没有效果,估计是输入法切换的冲突(CTRL+SPACE是我中英文输入的默认快捷 键)于是寻求解决方法,在QT Creater->Tools->Options... 里找到environment->Keyboard,发现 TextEditor.CompleteThis命令,其快捷键是Ctrl+S