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 就能够了,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

怎样样,是不是很交心!

3.3 Alibaba Java Coding Guide

插件官网:plugins.jetbrains.com/plugin/1004…

这个插件,也不做过多解说。阿里巴巴官方推出了 Java 开发手册,这个插件便是检查你的代码是否契合手册标准的,直接装置吧,信任阿里巴巴!

举个简略的比方,当我要获取当时时刻戳的时分,我这么写:long time1 = new Date().getTime(),这个时分,它就会有报错提示,告知你直接运用 long time2 = System.currentTimeMillis()

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

怎样样,是不是很智能,又学到了一招吧!

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。

如下所示:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

当然,鉴于大都情况下,Java 不存在 kebab-case/space case 即 中划线/空格 连接办法,你还能够在装备中设置,格局切换时去掉他们,这样切换时,按 Alt + Shift + u 的次数就能够少些,装备办法如下:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

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!如下图所示:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

当我需要将 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 最大的优势便是免费、安全(完全依据离线形式,不会上传任何代码和个人信息)。

功用上也比较强壮,贴个图参考下:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

插件官网:plugins.jetbrains.com/plugin/7638…

关于 AI 插件,现在我就引荐这一个,确实比较强壮(好多 AI 插件,名曰人工智能,其实人工智障,还卡得要死)。贴一个 gif 咱们感受下:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

当你想初始化一个 List 的时分,再你敲完 List 后,你就能够发现,后边的 users = new ArrayList<>(); 就有智能提示了,都不必敲了。

当然上面举的比方仅仅 Codota 很小的一个智能提示,其他更多留给咱们探究。

总归,许多时分,它的智能提示很强壮,能省去你不少时刻,省得你一个个敲代码了!

3.7 GsonFormat

插件官网:plugins.jetbrains.com/plugin/7654…

这个插件的作用,便是依据 json 字符串,主动生成 Java bean。先放个官网的 gif 吧:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

这儿运用的便利键是:Alt + s。

这儿需要留意的一点是,gsonformat 插件支撑自定义 json 反序列化库,比方 jackson,gson 等,能够在 setting 里边设置,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

3.8 Grep Console

插件官网:plugins.jetbrains.com/plugin/7125…

这个插件的作用是对 idea 默许的 Console(控制台)做增强,比方默许的控制台输出的日志,不论日志等级是什么,都是没有色彩区别的。 有了这个插件后,ERROR、WARN 等不同等级的日志,会展现成不同的色彩,便利咱们一眼就看出来有没有错误日志等。

默许的配色计划如下:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

详细的色彩装备以及更多的功用,能够参考插件官网。

3.9 Maven Helper

插件官网:plugins.jetbrains.com/plugin/7179…

平时咱们的 maven 项目,会遇到一些依靠冲突的问题,比较难以排查和定位。有了这个插件后,能够便利的显现出来有哪些依靠冲突,并且还能够主动加上 exclude,操作界面如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

3.10 RestfulToolKit

插件官网:plugins.jetbrains.com/plugin/1029…

这个插件的作用是,帮助咱们快速导航到指定 url 恳求途径的 controller 办法。平时咱们的项目会写许多的 controller 以及办法,来处理不同的 url 恳求。 可是当代码多了今后,很难找到某个 url 是哪个办法处理的,有了这个插件,就能够快速依据 url 导航到详细的办法。

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

便利键是 cmd + \。

3.11 Rainbow Brackets

插件官网:plugins.jetbrains.com/plugin/1008…

这是一款提高 idea 颜值的插件。咱们写的代码,经常会有许多嵌套的括号,比方 get1(get2(get3())),这么多的括号嵌套,并且色彩都还相同,会看得人目不暇接。有了这个插件,会给每一对括号都显现上不同的色彩,添加颜值的同时,也较便利的看出哪些括号是一对:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

好了,到这儿,引荐的常用插件就介绍完了。咱们能够依据需要,自由装置哪些插件。记住:插件虽好,可不要贪杯哦!

假如你也有好用的插件引荐,欢迎联络我,一同探讨学习!

4. 高效装备

Idea 确实是一款十分十分优秀的 Java IDE。所谓好马还得好鞍配,下面介绍的一些高校装备,能够让你运用 idea 的时分,更舒适、更高效!

4.1 import 主动导入包和删去无用的 import

设置途径:Editor -> General -> Auto Import。 勾选其间的 add on the fly 和 optimize on the fly,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

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),如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

4.3 保存文件时主动去掉结尾空格

设置途径:Editor -> General -> Other。 Strip trailing space on Save 选 All,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

4.4 智能提示不区别大小写

设置途径:Editor -> General -> code completion。 撤销勾选 match case,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

4.5 idea terminal 选中复制

在 Tools->Terminal 中把 “Copy to clipboard on selection” 选中,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

5. 超好用的便利键

这一章节,将引荐一些超好用的便利键。有了这些便利键的加持,不仅能够节省你许多的时刻,还能让你写出更优秀的代码!

5.1 全能提示神器:Alt + Enter

假如你只想记住一个便利键的话,我引荐这个!Alt + Enter 是一个全能提示器,能够用说是好用到爆破!

只需 idea 有标红、标黄或标灰的当地,你按下 Alt + Enter,基本上都能够主动修正。

举个简略的比方,我的这个办法有剩余的参数s2,idea 有置灰提示:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

它告知我s2 没有用到,那么我怎样安全删去这个s2 呢(直接删去的话,调用的当地会报错)?这时分,你只需选中s2,然后按下 Alt + Enter,就会发现有提示: Safe delete s2,然后就能够安全的删去 s2了,包含调用的当地。下面是动图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

结合前面的 GenerateAllSetter 插件,当咱们 new 一个目标后,假如想生成这个目标一切的 setter 办法,也能够用 Alt + Enter: 选中变量名,按下 Alt + Enter,挑选 Generate all setter 即可,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

上面演示的仅仅 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(),如下动图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

可是,假如你敲完 .touper 后,不是回车而是按 Tab,那么 idea 就会用 toUpperCase() 直接替换 toLowerCase():

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

这次,没有剩余的 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。

咱们用动图来别离展现下这两种办法:

  • 挨个敲出来

    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

  • 用 postfix

    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

怎样样?用postfix,写 for 循环是不是很快!(中心用到 sout 缩写是后边 LiveTemplate 要讲的)。运用办法也很简略,只需要在写完 100 后按下 “.”,idea 就主动呈现提示了!

Postfix,正如其名,便是在后边按下 “.”,然后呈现相应的提示,这些提示是 idea 默许自带的,不需要任何装备,开箱即用!

惋惜的是,idea 的 postfix 支撑的功用是固定的,不能自定义,咱们能够在 Editor -> General -> Postfix Comletion 中检查悉数的 postfix 功用,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

再来几个动图演示下:

  • 快速写 if (obj == null) 和 if (obj != null) :
    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

这儿运用的是 .null 和 .nn postfix。

  • 调用办法并快速声明、赋值给变量
    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

能够看到,咱们不需要先写变量声明,然后被办法调用赋值,能够运用 .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 要害字,就能够帮你完成上面的功用,咱们经过一个动图来展现下:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

假如你也想经过一些要害字,来生成一段代码,那么你能够添加自定义 Live Template。比方咱们写单元测试时,需要写一个 test 办法,如下:

    @Test
    public void test() {
    }

我不想每次都写这么一大堆,我想输入 pvt 时,他能主动生成这个办法。下面我就演示下如何添加 Live Template 来完成这个功用。

过程如下:

  1. 在 Editor -> Live Templates 页面,点击右上角的 +,挑选 2. Template Group,创立一个组,如下图:
    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

输入你想要取的组名,比我我这儿叫 demo。

  1. 选中你刚才创立的 demo 组,再次点击右上角的 +,挑选 1. Live Template,创立一个 Live Template,
    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

点完后,会呈现如下页面,需要你装备下:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

一共有 5 个要害点,我都标出来了:

  • 1 触发要害字,这儿写 pvt,也便是说当你写下 pvt 的时分,就会有相应提示;
  • 2 描绘,这儿写上你这个 pvt 的描绘,便利提示的时分知道这个缩写是干什么的;
  • 3 这儿便是要主动生成的代码,咱们这儿写上 junit test 的模板代码;留意 $END$ 是说生成代码后,光标会落到这儿;
  • 4 引荐生成代码后,主动格局化下;
  • 5 这儿比较要害,需要你装备下这个缩写的生效规模,由于 idea 不止能够写 java,还能够写 kotlin, groovy, js 等,咱们一般勾选 Java 即可,如下图:
    用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

然后,你就能够运用 pvt 这个缩写来生成代码了,如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

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 就搞定了,如下动图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

你看,连带办法名和一切的参数列表,悉数一键写好!那么是如何做到的呢?用到了 Live Template 变量 和 groovy 脚本。

详细过程如下: 1 新建一个 Live Template, 取名叫 logp,(过程参考上一节,略过),如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

2 Template Text 中输入如下

log.info("$METHOD_NAME$: $METHOD_PARAMETERS$", $METHOD_PARAMETERS_VALUES$);
$END$

3 点击 Edit Variables,上面的 METHODNAMEMETHOD_NAME 等便是变量,能够装备这些变量的值,装备如下图:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

  • 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),也欢迎重视:

用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

本文由博客群发一文多发等运营东西渠道 OpenWrite 发布