0. 背景
作为一个 Java 程序员,我置信,绝大多数同学日常都是用 idea 来写代码。
Idea 作为宇宙第一 Java IDE,提供了丰盛、弱小的性能,能够让你写 Java 代码快得飞起来。
遗憾的是,很多人都不晓得怎么开启 idea 暗藏的弱小性能。上面博主将带你一起,探索 idea 背地那些弱小到逆天的性能。
特地阐明:
本文所有实操基于 Mac OSX 零碎,其余操作系统(如 Windows,Linux 等)没有实际过,不做解说。
非特地阐明:
尽管文章题目有点『题目党』的嫌疑,然而内容相对不是题目党文章,干货满满,请急躁往下看,看完没播种间接来北京打我!
1. ToC(目录)
本文将从以下几个方面,开展解说:
- keymap
- 罕用插件
- 高效配置
- 超好用的快捷键
- 神器:Postfix
- 终极神器:Live Template
2. keymap
keymap,就是 idea 的快捷键配置计划,自身没有太多的内容,之所以放到最后面,是因为后续的解说,很大水平上都依赖于 keymap。
倡议将 keymap 设置为默认的,比方 Mac 下默认的 keymap 就是 Mac OS X 10.5 +。
这样当你想应用某个快捷键而 Google 时,少数时候,找到的答案都应用的是默认的快捷键计划,不然的话,他人的快捷键你不肯定实用。
3. 罕用插件
接下来为大家举荐一些罕用的插件,有了这些插件的加持,会让你的工作事倍功半。
为了不便大家索引,先把举荐的插件列到上面:
- Lombok
- Key Promoter X
- Alibaba Java Coding Guide
- CamelCase
- GenerateAllSetter
- Codota AI Autocomplete
- GsonFormat
- Grep Console
- MavenHelper
- RestfulToolKit
- RainbowBrackets
- Mybatis Plugin
上面将逐个介绍这些罕用的插件。
3.1 Lombok
插件官网:https://plugins.jetbrains.com…
这个插件,置信不必多做解释,写过 Java 的同学都晓得,JavaBean 代码里有一堆的 set/get,tostring 等办法,十分臃肿。有了 Lombok 之后,再也不必写这些臃肿的代码了。
3.2 Key Promoter X
插件官网:https://plugins.jetbrains.com…
这个插件的作用是通知你,你做的某个操作,有哪些快捷键能够代替。
有些时候,咱们想要做某件事情,比方我想关上 idea 自带的 terminal,然而我并不知道有快捷键能够用,于是我只能傻乎乎的用鼠标去点开 terminal。
有了这个插件后,当你用鼠标去点 terminal 时,右下角会有个弹窗提醒,通知你,其实你没必要用鼠标去点,间接应用快捷键 Alt + F12
就能够了,如下图:
怎么样,是不是很贴心!
3.3 Alibaba Java Coding Guide
插件官网:https://plugins.jetbrains.com…
这个插件,也不做过多解释。阿里巴巴官网推出了 Java 开发手册,这个插件就是查看你的代码是否合乎手册标准的,间接装置吧,置信阿里巴巴!
举个简略的例子,当我要获取以后工夫戳的时候,我这么写:long time1 = new Date().getTime()
,这个时候,它就会有报错提醒,通知你间接应用 long time2 = System.currentTimeMillis()
:
怎么样,是不是很智能,又学到了一招吧!
3.4 CamelCase
插件官网:https://plugins.jetbrains.com…
这个插件的作用是对字符串做格局上的转化:kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case or space case 等。
典型的利用场景是,比方咱们数据库外面的字段,用的是下划线的格局,然而 Java 外面的字段,用的是驼峰的格局。
咱们怎么保障不会因为手残导致数据库字段和 Java 字段对不上呢?比方数据库字段是 your_name,一不小心 Java 里写成了 youName。
当你遇到问题的时候,预计查到哭都查不进去,Java 外面的字段少了个 ‘r’。
这种状况下,CamelCase 插件就派上用场了。应用快捷键 Alt + Shift + u,就能够在各种格局之间切换了,很容易就能够把 your_name 变成 yourName。
如下所示:
当然,鉴于少数状况下,Java 不存在 kebab-case/space case 即 中划线 / 空格 连贯形式,你还能够在配置中设置,格局切换时去掉他们,这样切换时,按 Alt + Shift + u 的次数就能够少些,配置办法如下:
3.5 GenerateAllSetter
插件官网:https://plugins.jetbrains.com…
这相对是一个特地值得举荐的插件,可能 save your life !
在咱们写代码的时候,常常会有各种 dto 之间的转化,比方从数据库的 User 转化为前端的 UserVO。
如果是你本人写,先不说写一堆 get/set 累不累,最要害的是,我怕写漏了某个字段!比方 User 有 10 个字段,最初到 UserVO 只有 9 个了,哭都没中央哭!
总不能一个个数吧?这时候 GenerateAllSetter 就进去援救你了!他能够主动的帮你生成 UserVO 所有的 set 办法,更智能的是,如果 UserVO 和 User 字段名一样,它还会主动帮你生成 get!如下图所示:
当我须要将 User 转化为 UserVO 时,在我写好办法申明后,按下 Alt + Enter,选中 Generate setter getter converter,他就主动帮我写好转化的代码了!
怎么样,是不是 6 得飞起,妈妈再也不必放心我写漏字段了!
题外话:
可能有些人会有疑难,不就是个 DTO 转化吗?我用 BeanUtils 等工具不香吗?还真是不香,这玩意有很多坑,性能是一方面,要害是当字段名不一样时,很难察觉到
3.6 Codota AI Autocomplete
插件官网:https://plugins.jetbrains.com…
对于 AI 插件,目前我就举荐这一个,的确比拟弱小(好多 AI 插件,名曰人工智能,其实人工智障,还卡得要死)。贴一个 gif 大家感触下:
当你想初始化一个 List<String> 的时候,再你敲完 List<String> 后,你就能够发现,前面的 users = new ArrayList<>(); 就有智能提醒了,都不必敲了。
当然下面举的例子只是 Codota 很小的一个智能提醒,其余更多留给大家摸索。
总之,很多时候,它的智能提醒很弱小,能省去你不少工夫,省得你一个个敲代码了!
3.7 GsonFormat
插件官网:https://plugins.jetbrains.com…
这个插件的作用,就是依据 json 字符串,主动生成 Java bean。先放个官网的 gif 吧:
这里应用的快捷键是:Alt + s。
这里须要留神的一点是,gsonformat 插件反对自定义 json 反序列化库,比方 jackson,gson 等,能够在 setting 外面设置,如下图:
3.8 Grep Console
插件官网:https://plugins.jetbrains.com…
这个插件的作用是对 idea 默认的 Console(控制台)做加强,比方默认的控制台输入的日志,不论日志级别是什么,都是没有色彩辨别的。
有了这个插件后,ERROR、WARN 等不同级别的日志,会展现成不同的色彩,不便咱们一眼就看进去有没有谬误日志等。
默认的配色计划如下:
具体的色彩配置以及更多的性能,能够参考插件官网。
3.9 Maven Helper
插件官网:https://plugins.jetbrains.com…
平时咱们的 maven 我的项目,会遇到一些依赖抵触的问题,比拟难以排查和定位。有了这个插件后,可能不便的显示进去有哪些依赖抵触,而且还能够主动加上 exclude,操作界面如下图:
3.10 RestfulToolKit
插件官网:https://plugins.jetbrains.com…
这个插件的作用是,帮忙咱们疾速导航到指定 url 申请门路的 controller 办法。平时咱们的我的项目会写大量的 controller 以及办法,来解决不同的 url 申请。
然而当代码多了当前,很难找到某个 url 是哪个办法解决的,有了这个插件,就能够疾速依据 url 导航到具体的办法。
快捷键是 cmd + \。
3.11 Rainbow Brackets
插件官网:https://plugins.jetbrains.com…
这是一款晋升 idea 颜值的插件。咱们写的代码,常常会有很多嵌套的括号,比方 get1(get2(get3())),这么多的括号嵌套,而且色彩都还一样,会看得人目迷五色。有了这个插件,会给每一对括号都显示上不同的色彩,减少颜值的同时,也较不便的看出哪些括号是一对:
好了,到这里,举荐的罕用插件就介绍完了。大家能够依据须要,自在装置哪些插件。记住:插件虽好,可不要贪杯哦!
如果你也有好用的插件举荐,欢送分割我,一起探讨学习!
4. 高效配置
Idea 的确是一款十分十分优良的 Java IDE。所谓好马还得好鞍配,上面介绍的一些高校配置,能够让你应用 idea 的时候,更舒服、更高效!
4.1 import 主动导入包和删除无用的 import
设置门路:Editor -> General -> Auto Import。
勾选其中的 add on the fly 和 optimize on the fly,如下图:
4.2 防止 import *
默认状况下,当 import 同一个包的 class 超过 5 个后,idea 会替换成 import *。然而通常咱们不倡议这样写,遵循的准则就是应用哪些就明确写援用哪些!
设置门路:Editor -> Code Style -> Java -> Imports。
将 Class count to use import with、Names count to use static import with * 都设置为 999(默认都是 5),如下图:
4.3 保留文件时主动去掉开端空格
设置门路:Editor -> General -> Other。
Strip trailing space on Save 选 All,如下图:
4.4 智能提醒不辨别大小写
设置门路:Editor -> General -> code completion。
勾销勾选 match case,如下图:
5. 超好用的快捷键
这一章节,将举荐一些超好用的快捷键。有了这些快捷键的加持,不仅可能节俭你大量的工夫,还能让你写出更优良的代码!
5.1 万能提醒神器:Alt + Enter
如果你只想记住一个快捷键的话,我举荐这个!Alt + Enter 是一个万能提醒器,能够用说是好用到爆炸💥!
只有 idea 有标红、标黄或标灰的中央,你按下 Alt + Enter,基本上都可能主动修复。
举个简略的例子,我的这个办法有多余的参数 s2,idea 有置灰提醒:
它通知我 s2 没有用到,那么我怎么平安删除这个 s2 呢(间接删除的话,调用的中央会报错)?这时候,你只需选中 s2,而后按下 Alt + Enter,就会发现有提醒:Safe delete s2
,而后就能够平安的删除 s2 了,包含调用的中央。上面是动图:
联合后面的 GenerateAllSetter 插件 ,当咱们 new 一个对象后,如果想生成这个对象所有的 setter 办法,也能够用 Alt + Enter:
选中变量名,按下 Alt + Enter,抉择 Generate all setter 即可,如下图:
下面演示的只是 Alt + Enter 弱小性能的冰山一角,更多个性留给大家摸索,倡议大家有事没事多按按 Alt + Enter,说不定会有意外播种。
5.2 Tab 主动补全
这个性能就是用 idea 提醒的候选项,替换你以后编辑的内容。
这么说可能有点形象,咱们来举个例子,假如我有上面的代码:
private static String get1(String s1) {return return s1.toLowerCase().trim();;}
我当初想把 toLowerCase 换成 toUpperCase,这时候我的光标在 s1 前面,如果咱们间接敲 .touper… 而后回车,你回发现,toLowerCase 并没有被替换,而是被挪动到了 toUpperCase() 前面,而后你还得手动去删除 toLowerCase(),如下动图:
然而,如果你敲完 .touper 后,不是回车而是按 Tab,那么 idea 就会用 toUpperCase() 间接替换 toLowerCase():
这次,没有多余的 toLowerCase() 了,不必手动去删除了!
5.3 主动生成代码:Cmd + N
按下 Cmd + N 后,有提醒能够主动生成代码,如 getter/setter/toString 等。
5.4 智能完结以后语句:Cmd + Shift + Enter
按下 Cmd + Shift + Enter 后,能够智能完结以后语句,比方主动给行尾加上分号,主动给 if 加上括号等,能够本人多尝试下。
5.5 文件导航快捷键
- Cmd + O:关上类
- 双击 Shift:关上任意文件
- Cmd + E:最近关上文件列表
- Auto scroll from/to source:左侧文件列表与右侧 Tab 联动
6. 神器:Postfix
Postfix 堪称是 idea 暗藏的一大神技!Postfix 简略易用,然而功能强大,要害是一点也不简单。置信学会了 postfix 后,你会悔恨怎么没有早点 get 到这项技能。好了,废话不多说,咱们间接开始。
咱们来举个例子,假如当初须要写一个 for 循环,顺次打印 [0, 100) 这个 100 个数,那么代码如下:
public static void main(String[] args) {for (int i = 0; i < 100; i++) {System.out.println(i);
}
}
代码自身是比较简单的,要害是下面的 for 循环代码是怎么写进去的。咱们有两种形式:挨个敲进去 和 用 postfix。
咱们用动图来别离展现下这两种形式:
- 挨个敲进去
- 用 postfix
怎么样?用 postfix,写 for 循环是不是很快!(两头用到 sout 缩写是前面 LiveTemplate 要讲的)。应用办法也很简略,只须要在写完 100 后按下 “.”,idea 就主动呈现提醒了!
Postfix,正如其名,就是在前面按下 “.”,而后呈现相应的提醒,这些提醒是 idea 默认自带的,不须要任何配置,开箱即用!
遗憾的是,idea 的 postfix 反对的性能是固定的,不能自定义,咱们能够在 Editor -> General -> Postfix Comletion 中查看全副的 postfix 性能,如下图:
再来几个动图演示下:
- 疾速写 if (obj == null) 和 if (obj != null):
这里应用的是 .null 和 .nn postfix。
- 调用办法并疾速申明、赋值给变量
能够看到,咱们不须要先写变量申明,而后被办法调用赋值,能够应用 .var 间接一步到位。
对于其余的 postfix,留给大家摸索!
7 终极神器:Live Template
上一章讲的 postfix,能够说是很弱小了,能够晋升不少写代码的速度。然而还是有点遗憾:postfix 毕竟数量无限,而且不是所有状况下都能应用。
那么接下来要讲的 LiveTemplate 就能够说是终极大杀招了,能够极大晋升写代码的速度!
备注:
很多同学可能会简略的认为 LiveTemplate 不就是个代码模板吗?相似于其余代码编辑器外面的 Code Snippet?如果你认为只有这点性能,那你真是小看了 Live Template。
上面将由浅入深解说 Live Template。
7.1 增加 Live Template
咱们常常在 Java 外面写 main 办法,也常常用 System.out.println() 等来输入。
你会发现,每次写这些很麻烦,有一大堆代码要敲,那么有没有简略快捷的形式呢?答案就是 LiveTemplate。
idea 自带的 main、sout 关键字,就能够帮你实现下面的性能,咱们通过一个动图来展现下:
如果你也想通过一些关键字,来生成一段代码,那么你能够增加自定义 Live Template。比方咱们写单元测试时,须要写一个 test 办法,如下:
@Test
public void test() {}
我不想每次都写这么一大堆,我想输出 pvt 时,他能主动生成这个办法。上面我就演示下如何增加 Live Template 来实现这个性能。
步骤如下:
- 在 Editor -> Live Templates 页面,点击右上角的 +,抉择 2. Template Group,创立一个组,如下图:
输出你想要取的组名,比我我这里叫 demo。
- 选中你方才创立的 demo 组,再次点击右上角的 +,抉择 1. Live Template,创立一个 Live Template,
点完后,会呈现如下页面,须要你配置下:
一共有 5 个关键点,我都标出来了:
- 1 触发关键字,这里写 pvt,也就是说当你写下 pvt 的时候,就会有相应提醒;
- 2 形容,这里写上你这个 pvt 的形容,不便提醒的时候晓得这个缩写是干什么的;
- 3 这里就是要主动生成的代码,咱们这里写上 junit test 的模板代码;留神
$END$
是说生成代码后,光标会落到这里; - 4 举荐生成代码后,主动格式化下;
- 5 这里比拟要害,须要你配置下这个缩写的失效范畴,因为 idea 不止能够写 java,还能够写 kotlin, groovy, js 等,咱们个别 勾选 Java 即可,如下图:
而后,你就能够应用 pvt 这个缩写来生成代码了,如下图:
7.2 Live Template 进阶应用:变量和 groovy 脚本
下面说过,Live Template 不仅仅是用缩写去生成代码,Live Template 还反对定义变量、编写 groovy 脚本等形式,来加强性能,这个才是 Live Template 大杀器。
咱们间接来看下演示。假如我有如下代码:
public void printLogDemo(String s1, int i2, boolean b3) {}
我当初想把所有的参数都打下日志,变成上面这样:
public void printLogDemo(String s1, int i2, boolean b3) {log.info("printLogDemo: s1={}, i2={}, b3={}", s1, i2, b3);
}
那我是要一个个去敲这些 s1={}, i2={}, b3={} 吗?如果参数很多呢?是不是很吃力,有了 Live Template 后,我只须要敲 logp 就搞定了,如下动图:
你看,连带办法名和所有的参数列表,全副一键写好!那么是如何做到的呢?用到了 Live Template 变量 和 groovy 脚本。
具体步骤如下:
1 新建一个 Live Template,取名叫 logp,(步骤参考上一节,略过),如下图:
2 Template Text 中输出如下:
log.info("$METHOD_NAME$: $METHOD_PARAMETERS$", $METHOD_PARAMETERS_VALUES$);
$END$
3 点击 Edit Variables,下面的 $METHOD_NAME$ 等就是变量,能够配置这些变量的值,配置如下图:
- METHOD_NAME:选用 idea 自带的办法 methodName(),即获取办法名;
-
METHOD_PARAMETERS:是一段 groovy 脚本,如下:
groovyScript("_1.collect { it +'={}'}.join(', ')", methodParameters())
-
METHOD_PARAMETERS_VALUES:是一段 groovy 脚本,如下:
groovyScript("_1.collect { it}.join(', ')", methodParameters())
groovy 脚本里的 methodParameters(),援用的是 idea 自带的办法,即获取办法参数列表。
怎么样,是不是很弱小!Live Template 的更多玩法,留给大家本人去实现。
7.3 福利阐明
在我的 idea 中,曾经配置好了大量开箱即用的 Live Template,比方:
- logp:下面解释的,主动打印参数列表;
- loge:抛异样时,主动打印参数列表和异样信息,日志级别为 ERROR;
- lstr:主动生成 List<String>
- aslist:主动生成 Arrays.asList()
- ifempty:主动生成 if (CollectionUtils.isEmpty($collection$))
还有更多,就不一一列举了。如果想获取这些开箱即用的 Live Template,能够关注我的公众号,回复关键字 LiveTemplate,就能够了。
发送给你的是 idea setting.zip,包含了 Live Template,以及前文介绍的一些高效配置,都在这个外面了,你间接导入就能够用了。
8 结束语
这篇文章,能够说是满满的干货,前前后后好几个早晨都在加班写!尤其是动图局部,为了做到最好的演示成果,录制了很多遍!
如果你看完也有点播种,能够 点赞 + 关注 + 分享 三连走一波,谢谢!
我是梅小西,最近在某东南亚电商公司做 DevOps 的相干事件。从本期开始,将陆续分享基于 Jenkins 的 CI/CD 工作流,包含 Jenkins On k8s 等。
如果你对 Java 或者 Jenkins 等感兴趣,欢送与我分割,微信:wxweven(备注 DevOps),也欢送关注公众号:
本文由博客群发一文多发等经营工具平台 OpenWrite 公布