DevWeekly收集整理每周优质开发者内容,包括开源项目、工具资源、技术文章等方面,每周五首发于DevWeekly,欢迎大家Star并收藏!
还在把IntelliJ IDEA当成文本编辑器一样使用?那就亏大了!
今天就来给大家介绍一下非常好用的IntelliJ IDEA技巧–后缀补全。
后缀补全是一个非常强大的功能,它可以让你使用后缀补全来生成一个现有的表达式。
这大大减少手动输入、光标移动等时间,从而提高了工作效率。
后缀补全
每当你有一个现有的表达式时,你可以在一个点后面附加一个特定的后缀,并使用Tab键来应用它。IntelliJ IDEA接收表达式,并根据提供的后缀对其进行转换。
加入,你有一个字符串列表名为items,现在你需要遍历它,按照常规操作,就应该开始敲击键盘输入for …,写一大串循环遍历语句。
如果通过后缀补全,你只需要输入items.for,IDEA就会自动识别for这个后缀自动创建一个for-each表达式,如下图所示:
是不是很有意思?接下来再试试try这个后缀后缀:
它会快速生成一个try-catch表达式,是不是很高效?
除了这两个之外,还有很多后缀补全模板:
fori
:通过索引进行列表迭代forr
:用索引按相反的顺序进行迭代switch
:生成switch表达式sout
:使用System.out.println打印表达式null
:检查表达式是否为空notnull
:检查表达式是否为非空
通过一个简单的后缀,就可以补全一串表达式,效率也得到了很大的提升。
该功能最初在ReSharper中可用,然后作为IDEA的一个单独插件,后来在13.1版本中作为核心功能被引入IDEA。
显示可用模板
不同类型的变量、表达式有不同的后缀补全,而且这些后缀模板也没必要死记硬背。
IDEA为我们提供了一个非常方便的快捷键,可以显示可用的模板:
- Windows:
Ctrl+J
- macOS:
⌘ + J
通过快捷键,它会打开一个弹出窗口,只显示与给定类型相关的后缀模板。也就是说,如果你在一个列表后面触发快捷键,它只会显示一个和列表相关的后缀模板。
配置
如果你觉得默认的后缀补全不匹配你的使用习惯,你可以进行个性化配置。
你可以在Preferences→Editor → General → Postfix Completion
设置中,浏览可用的后缀模板,你可以禁用个别模板或整个功能。
自定义模板
虽然IDEA提供了相当多的内置模板,但是,开发者众多,个性化需求自然也很多,所以,内置模板不一定能够满足每个用户的需求,这时候就会想到,能不能自定义模板呢?
很不幸,它不允许定义自己的模板。
不过,有一个IDE插件可以解决这个问题,它的名字叫Custom Postfix Templates
。
该插件带有各种各样的附加模板,你可以使用或编辑这些模板来更好地满足你的需要,在语言方面,它还支持Java, Scala, SQL, PHP, Kotlin, Python, Dart, JavaScript, Ruby, Rust, Go和Groovy。
而且,更重要的是,你实际上可以添加自定义模板。
这款插件目前支持通过Java语言自定义模板,后续会支持更多语言当然。
不会Java的也不用担心,Custom Postfix Templates真正好的地方在于,模板语法真的很容易读和写。
下面来看看一个具体的例子:
.toInt : convert to int
java.lang.String → Integer.parseInt($expr$)
java.lang.Number → $expr$.intValue()
NUMBER → ((int) ($expr$))
解释一下这段自定义模板的代码。
第一行由后缀模板以及描述组成,它触发了模板.toInt,在冒号后有一个文本描述。
然后是若干行代码,这些行定义了在不同的输入类型下应该产生什么样的结果,而后缀则适用于不同的输入类型。
换句话说,当给定的变量类型不同时,同一个后缀模板可以给出不同的结果。
在上面的例子中,你可以看到,使用.toInt后缀将字符串转换为整数,处理方式是Integer.parseInt($expr$)。
然而,将相同的前缀应用于数字时,处理方式就变成了(int) ($expr$)。
该插件在Editor→Custom Postfix Templates的设置中增加了一个新的模块,在这里你可以看到所有模板的列表,也可以编辑它。
很多功能刚开始接触时都会觉得麻烦,但是一旦习惯了之后就会真正体会到它带来的效率提升,后缀补全就是这样的一项功能,我们可以用一个简单的后缀转换成几行甚至几十行代码,它的便利性可想而知。感兴趣的同学赶紧用起来吧!
建议大家有空可以多浏览Github,有很多好用的开源免费工具。但是,目前Github上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐Github上一个非常不错的项目《DevWeekly》,这个项目每周都会精挑细选一些优质的开源项目,涵盖C++、JAVA、JavaScript、Python、Go等不同编程语言。此外,还有一些开源工具、优秀的技术文章,喜欢的同学可以Star并收藏一下,每周五会定期更新:
GitHub - Jackpopc/DevWeekly: 每周五发布,精选优质开发者内容,包括开源项目、工具资源、技术文章等方面。