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

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

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

插件官网: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 就可以了,如下图:

file

怎么样,是不是很贴心!

3.3 Alibaba Java Coding Guide

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

这个插件,也不做过多解释。阿里巴巴官方推出了 Java 开发手册,这个插件就是检查你的代码是否符合手册规范的,直接安装吧,相信阿里巴巴!

举个简单的例子,当我要获取当前时间戳的时候,我这么写:long time1 = new Date().getTime(),这个时候,它就会有报错提示,告诉你直接使用 long time2 = System.currentTimeMillis()file

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

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。

如下所示: file

当然,鉴于多数情况下,Java 不存在 kebab-case/space case 即 中划线/空格 连接方式,你还可以在配置中设置,格式切换时去掉他们,这样切换时,按 Alt + Shift + u 的次数就可以少些,配置方法如下: file

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

当我需要将 User 转化为 UserVO 时,在我写好方法声明后,按下 Alt + Enter,选中 Generate setter getter converter,他就自动帮我写好转化的代码了!

怎么样,是不是 6 得飞起,妈妈再也不用担心我写漏字段了!

题外话:

可能有些人会有疑问,不就是个 DTO 转化吗?我用 BeanUtils 等工具不香吗?还真是不香,这玩意有很多坑,性能是一方面,关键是当字段名不一样时,很难察觉到

3.6 Codota AI Autocomplete

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

关于 AI 插件,目前我就推荐这一个,确实比较强大(好多 AI 插件,名曰人工智能,其实人工智障,还卡得要死)。贴一个 gif 大家感受下: file

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

当然上面举的例子只是 Codota 很小的一个智能提示,其他更多留给大家探索。

总之,很多时候,它的智能提示很强大,能省去你不少时间,省得你一个个敲代码了!

3.7 GsonFormat

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

这个插件的作用,就是根据 json 字符串,自动生成 Java bean。先放个官网的 gif 吧: file

这里使用的快捷键是:Alt + s。

这里需要注意的一点是,gsonformat 插件支持自定义 json 反序列化库,比如 jackson,gson 等,可以在 setting 里面设置,如下图: file

3.8 Grep Console

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

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

默认的配色方案如下: file

具体的颜色配置以及更多的功能,可以参考插件官网。

3.9 Maven Helper

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

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

3.10 RestfulToolKit

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

这个插件的作用是,帮助我们快速导航到指定 url 请求路径的 controller 方法。平时我们的项目会写大量的 controller 以及方法,来处理不同的 url 请求。 但是当代码多了以后,很难找到某个 url 是哪个方法处理的,有了这个插件,就可以快速根据 url 导航到具体的方法。

file

快捷键是 cmd + \。

3.11 Rainbow Brackets

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

这是一款提升 idea 颜值的插件。我们写的代码,经常会有很多嵌套的括号,比如 get1(get2(get3())),这么多的括号嵌套,而且颜色都还一样,会看得人眼花缭乱。有了这个插件,会给每一对括号都显示上不同的颜色,增加颜值的同时,也较方便的看出哪些括号是一对: file

好了,到这里,推荐的常用插件就介绍完了。大家可以根据需要,自由安装哪些插件。记住:插件虽好,可不要贪杯哦!

如果你也有好用的插件推荐,欢迎联系我,一起探讨学习!

4. 高效配置

Idea 确实是一款非常非常优秀的 Java IDE。所谓好马还得好鞍配,下面介绍的一些高校配置,可以让你使用 idea 的时候,更舒适、更高效!

4.1 import 自动导入包和删除无用的 import

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

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

4.3 保存文件时自动去掉末尾空格

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

4.4 智能提示不区分大小写

设置路径:Editor -> General -> code completion。 取消勾选 match case,如下图: file

5. 超好用的快捷键

这一章节,将推荐一些超好用的快捷键。有了这些快捷键的加持,不仅能够节省你大量的时间,还能让你写出更优秀的代码!

5.1 万能提示神器:Alt + Enter

如果你只想记住一个快捷键的话,我推荐这个!Alt + Enter 是一个万能提示器,可以用说是好用到爆炸💥!

只要 idea 有标红、标黄或标灰的地方,你按下 Alt + Enter,基本上都能够自动修复。

举个简单的例子,我的这个方法有多余的参数s2,idea 有置灰提示: file

它告诉我s2 没有用到,那么我怎么安全删除这个s2 呢(直接删除的话,调用的地方会报错)?这时候,你只需选中s2,然后按下 Alt + Enter,就会发现有提示: Safe delete s2,然后就可以安全的删除 s2了,包括调用的地方。下面是动图: file

结合前面的 GenerateAllSetter 插件,当我们 new 一个对象后,如果想生成这个对象所有的 setter 方法,也可以用 Alt + Enter: 选中变量名,按下 Alt + Enter,选择 Generate all setter 即可,如下图: file

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

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

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

我们用动图来分别展示下这两种方式:

  • 挨个敲出来 file

  • 用 postfix file

怎么样?用postfix,写 for 循环是不是很快!(中间用到 sout 缩写是后面 LiveTemplate 要讲的)。使用方法也很简单,只需要在写完 100 后按下 ".",idea 就自动出现提示了!

Postfix,正如其名,就是在后面按下 ".",然后出现相应的提示,这些提示是 idea 默认自带的,不需要任何配置,开箱即用!

遗憾的是,idea 的 postfix 支持的功能是固定的,不能自定义,我们可以在 Editor -> General -> Postfix Comletion 中查看全部的 postfix 功能,如下图: file

再来几个动图演示下:

  • 快速写 if (obj == null) 和 if (obj != null) : file

这里使用的是 .null 和 .nn postfix。

  • 调用方法并快速声明、赋值给变量 file

可以看到,我们不需要先写变量声明,然后被方法调用赋值,可以使用 .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 关键字,就可以帮你实现上面的功能,我们通过一个动图来展示下: file

如果你也想通过一些关键字,来生成一段代码,那么你可以添加自定义 Live Template。比如我们写单元测试时,需要写一个 test 方法,如下:

    @Test
    public void test() {
        
    }

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

步骤如下:

  1. 在 Editor -> Live Templates 页面,点击右上角的 +,选择 2. Template Group,创建一个组,如下图: file

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

  1. 选中你刚才创建的 demo 组,再次点击右上角的 +,选择 1. Live Template,创建一个 Live Template, file

点完后,会出现如下页面,需要你配置下: file

一共有 5 个关键点,我都标出来了:

  • 1 触发关键字,这里写 pvt,也就是说当你写下 pvt 的时候,就会有相应提示;
  • 2 描述,这里写上你这个 pvt 的描述,方便提示的时候知道这个缩写是干什么的;
  • 3 这里就是要自动生成的代码,我们这里写上 junit test 的模板代码;注意 $END$ 是说生成代码后,光标会落到这里;
  • 4 推荐生成代码后,自动格式化下;
  • 5 这里比较关键,需要你配置下这个缩写的生效范围,因为 idea 不止可以写 java,还可以写 kotlin, groovy, js 等,我们一般勾选 Java 即可,如下图: file

然后,你就可以使用 pvt 这个缩写来生成代码了,如下图: file

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

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

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

2 Template Text 中输入如下

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

3 点击 Edit Variables,上面的 METHODNAMEMETHOD_NAME 等就是变量,可以配置这些变量的值,配置如下图: file

  • 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),也欢迎关注:

image.png

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

分类:
开发工具
分类:
开发工具
收藏成功!
已添加到「」, 点击更改