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- Cosy
- GsonFormat
- Grep Console
- MavenHelper
- RestfulToolKit
- RainbowBrackets
- Mybatis Plugin
下面将逐一介绍这些常用的插件。
3.1 Lombok
插件官网:plugins.jetbrains.com/plugin/6317…
这个插件,信任不必多做解说,写过 Java 的同学都知道,JavaBean 代码里有一堆的 set/get,tostring 等办法,十分臃肿。有了 Lombok 之后,再也不必写这些臃肿的代码了。
3.2 Key Promoter X
插件官网:plugins.jetbrains.com/plugin/9792…
这个插件的作用是告知你,你做的某个操作,有哪些便利键能够代替。
有些时分,咱们想要做某件工作,比方我想翻开 idea 自带的 terminal,可是我并不知道有便利键能够用,所以我只能傻呵呵的用鼠标去点开 terminal。
有了这个插件后,当你用鼠标去点 terminal 时,右下角会有个弹窗提示,告知你,其实你没必要用鼠标去点,直接运用便利键 Alt + F12
就能够了,如下图:
怎样样,是不是很交心!
3.3 Alibaba Java Coding Guide
插件官网:plugins.jetbrains.com/plugin/1004…
这个插件,也不做过多解说。阿里巴巴官方推出了 Java 开发手册,这个插件便是检查你的代码是否契合手册标准的,直接装置吧,信任阿里巴巴!
举个简略的比方,当我要获取当时时刻戳的时分,我这么写:long time1 = new Date().getTime()
,这个时分,它就会有报错提示,告知你直接运用 long time2 = System.currentTimeMillis()
:
怎样样,是不是很智能,又学到了一招吧!
3.4 CamelCase
插件官网:plugins.jetbrains.com/plugin/7160…
这个插件的作用是对字符串做格局上的转化: 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
插件官网:plugins.jetbrains.com/plugin/9360…
这肯定是一个特别值得引荐的插件,能够 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 Cosy Alibaba Cloud AI Coding Assistant
之前引荐的是 Codota,可是 Codota 已经停用了,官方引荐运用 tabnine,个人运用了下 tabnine,感觉不好用:
- tabnine 要收费,免费版尽管也能用,可是功用比较有限
- 免费版的 tabnine 有点鸡肋,提示有点啰嗦,许多时分并不好用
- tabnine 或许会上传代码等数据,会有安全问题
依据以上原因,不再引荐运用 Codota,也不引荐运用 tabnine。替代计划是阿里巴巴出品的 Cosy:
- 官方文档:help.aliyun.com/document_de…
- 插件官网:plugins.jetbrains.com/plugin/1780…
相比于其他 AI Coding Assistant,Cosy 最大的优势便是免费、安全(完全依据离线形式,不会上传任何代码和个人信息)。
功用上也比较强壮,贴个图参考下:
插件官网:plugins.jetbrains.com/plugin/7638…
关于 AI 插件,现在我就引荐这一个,确实比较强壮(好多 AI 插件,名曰人工智能,其实人工智障,还卡得要死)。贴一个 gif 咱们感受下:
当你想初始化一个 List 的时分,再你敲完 List 后,你就能够发现,后边的 users = new ArrayList<>(); 就有智能提示了,都不必敲了。
当然上面举的比方仅仅 Codota 很小的一个智能提示,其他更多留给咱们探究。
总归,许多时分,它的智能提示很强壮,能省去你不少时刻,省得你一个个敲代码了!
3.7 GsonFormat
插件官网:plugins.jetbrains.com/plugin/7654…
这个插件的作用,便是依据 json 字符串,主动生成 Java bean。先放个官网的 gif 吧:
这儿运用的便利键是:Alt + s。
这儿需要留意的一点是,gsonformat 插件支撑自定义 json 反序列化库,比方 jackson,gson 等,能够在 setting 里边设置,如下图:
3.8 Grep Console
插件官网:plugins.jetbrains.com/plugin/7125…
这个插件的作用是对 idea 默许的 Console(控制台)做增强,比方默许的控制台输出的日志,不论日志等级是什么,都是没有色彩区别的。 有了这个插件后,ERROR、WARN 等不同等级的日志,会展现成不同的色彩,便利咱们一眼就看出来有没有错误日志等。
默许的配色计划如下:
详细的色彩装备以及更多的功用,能够参考插件官网。
3.9 Maven Helper
插件官网:plugins.jetbrains.com/plugin/7179…
平时咱们的 maven 项目,会遇到一些依靠冲突的问题,比较难以排查和定位。有了这个插件后,能够便利的显现出来有哪些依靠冲突,并且还能够主动加上 exclude,操作界面如下图:
3.10 RestfulToolKit
插件官网:plugins.jetbrains.com/plugin/1029…
这个插件的作用是,帮助咱们快速导航到指定 url 恳求途径的 controller 办法。平时咱们的项目会写许多的 controller 以及办法,来处理不同的 url 恳求。 可是当代码多了今后,很难找到某个 url 是哪个办法处理的,有了这个插件,就能够快速依据 url 导航到详细的办法。
便利键是 cmd + \。
3.11 Rainbow Brackets
插件官网:plugins.jetbrains.com/plugin/1008…
这是一款提高 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,如下图:
4.5 idea terminal 选中复制
在 Tools->Terminal 中把 “Copy to clipboard on selection” 选中,如下图:
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,上面的 METHODNAMEMETHOD_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
- aslist:主动生成 Arrays.asList()
- ifempty:主动生成 if (CollectionUtils.isEmpty(collectioncollection))
还有更多,就不一一列举了。假如想获取这些开箱即用的 Live Template, 能够重视我的公众号,回复要害字 LiveTemplate,就能够了。
发送给你的是 idea setting.zip,包含了 Live Template,以及前文介绍的一些高效装备,都在这个里边了,你直接导入就能够用了。
8 完毕语
这篇文章,能够说是满满的干货,前前后后好几个晚上都在加班写!尤其是动图部分,为了做到最好的演示作用,录制了许多遍!
假如你看完也有点收成,能够 点赞+重视+共享 三连走一波,谢谢!
(本文首发)
我是梅小西,最近在某东南亚电商公司做 DevOps 的相关工作。从本期开始,将陆续共享依据 Jenkins 的 CI/CD 作业流,包含 Jenkins On k8s 等。
假如你对 Java 或许 Jenkins 等感兴趣,欢迎与我联络,微信:wxweven(补白 DevOps),也欢迎重视:
本文由博客群发一文多发等运营东西渠道 OpenWrite 发布