主要内容:

  • 类注释模板
  • Live Templates
    • 内置快捷键
    • 自定义快捷键
  • Postfix Completion
    • 内置快捷键
    • 自定义快捷键
  • 实用快捷键

IDEA的设置分为全局设置和当前工程设置。
如果你希望当前设置作用于所有项目,请使用:
image.png

如果你当前设置仅作用于当前项目,请使用:
image.png


类注释模板

一般来说,注释信息的生成其实已经很方便了,输入/**回车即可出现文档注释:
comment.gif

但是,类注释信息中@author等信息是通用的,可以抽取出来自动生成。IDEA允许我们根据需要定制这类文档注释模板。由于一般也就只用Class、Interface、Enum、AnnotationType,所以我自己也就给这4个加了模板:
image.png

  1. /**
  2. * @author bravo
  3. * @since ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
  4. */

classcomment.gif

Live Templates

内置快捷键

开始进入重点。先来看看IDEA已经提供的快捷键。打开IDEA的preferences,搜索live templates:
image.png

IDEA本身可以用来开发各种编程语言,所以它的快捷键模板非常全面。这里我们只关注和Java有关的。

遍历

顾名思义,就是和遍历有关的快捷操作。

fori(正序)
fori.gif
截图中有两处不规范:

  • 测试类应该叫XxxTest,以Test结尾
  • 测试方法应该叫testXxx,以test开头

forr(倒序,r表示reverse)
forr.gif

上面说的是List,数组同理:
arrrayFor.gif

其他

main
main.gif

psf
psf.gif
建议左手小拇指按住shift输入大写字母,而不是切换大写。

ifn
ifn.gif

inn
inn.gif

sout
sout.gif
Kapture 2020-09-11 at 20.28.50.gif

thr
thr.gif

IDEA在Live Templates提供的快捷键还不少,其他的大家可以自己去看看,动手试试:
image.png

主要关注iterations、other、output、plain即可。注意,不要企图都背下来,选几个自己觉得常用的背下来即可。快捷键只是工具,不是目的,不要为了炫技而炫技,舍本逐末。

自定义快捷键

可以看出,快捷键确实能大大加快我们的开发速度,但是IDEA提供的快捷键不一定满足我们的需求,此时可以自定义Live Template。

自定义的规则

image.png

image.png

测试:
xixixi.gif

但是,我希望先写好变量,再去写注释,怎么调整光标的顺序呢?
image.png

再次测试 :
birthday.gif

但写得再快也不如自动生成。后面我们会介绍MyBatis Generator,简化初期构建项目时繁琐的POJO编写过程。

我的模板

这里展示一下我自定义的一些模板,仅作为启发思路,大家不一定要和我一样配置,有些快捷键其实反而会碍事。

@GET

$END$
@GetMapping("$PATH$")
public $RESULT$ get$METHOD_NAME$($PARAM$) {

}

GET.gif

@POST

$END$
@PostMapping("$PATH$")
public $RESULT$ $METHOD_NAME$($PARAM$) {

}

说句实话,实际开发还是复制已有的Controller方法改一改是最快的。

字段注释

/**
 * $COMMENT$
 */
private Integer $VAR$;
$END$

field.gif

@SBTEST
图片.png
Kapture 2020-09-01 at 19.04.29.gif

tst
tst.gif

判断集合非空

if ($LIST$ != null && $LIST$.size() > 0) {
    $END$
}

ifnotnullandsize.gif

当然,判断集合非空最好用工具类,比如:

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
</dependency>

Collections.gif

try-with-resource
Java7提供的自动关闭资源的方式

try (
            // 在这声明资源,多个语句用;隔开,最后一个可以不写
            $END$
    ) {
        // 在这使用资源

    } catch (IOException e) {
        e.printStackTrace();
    }

trywithresource.gif

Postfix Completion

对比一下IDEA提供的快捷键和我们自定义的快捷键:
difference.gif

你会发现:IDEA内置的fori快捷键可以以foo.fori这种后缀的方式触发,而我们自定义的不行!

其实不是不行,而是我们没定义。
正确来说,其实IDEA提供了两套自定义快捷键的方式,除了Live Templates,还有Postfix Completion:
image.png

postfix_list.gif

而之所以能使用list.fori,是因为IDEA在Postfix Completion里定义过for了:
image.png

也就是说IDEA有两套快捷键模板(Live Templates && Postfix Completion),而fori在两套模板中均有定义:
image.png

Live Templates Vs Postfix Completion

我们来对比一下IDEA在Live Templates定义的fori和在Postfix Completion定义的fori:
comparepostfixandlive.gif
Postfix Completion的自动化更彻底(相对地,牺牲了一部分机动性)。

自定义的规则

image.png

image.png

另外,有个微不足道的小建议,不要用IDEA自带的fori,自己定义一个foribravo:
image.png

这个写法优于IDEA自带的fori,因为循环中list.size()方法只会被调用一次:
Kapture 2020-08-29 at 11.59.02.gif
其他的大家自己摸索。老实说,规则太多反而记不住,大家根据自己的编码习惯,先记几个常用的即可。而且Postfix Completion里已经有很多好用的快捷键了,有时没事打开看看,能记几个是几个。

实用快捷键

平时没事可以打开上面的面板看看,都有快捷键提示的:
image.png

由于忘了windows的快捷键是啥,这里只能演示mac的。反正mac的command、option啥的也是类似windows的control、alt,大家自己试试看,或者百度一下。
部分快捷键之所以加fn,是因为我的mac带touch bar,如果你的是物理按键,不用加fn。

command+,:调出设置面板(可能是control+alt+s)
command+,.gif

不要勾选:启动时不会自动进入上次的项目,而是显示列表
image.png
图片.png

善用搜索框:
善用搜索框.gif

command+1调出/关闭project目录,左右方向键展开/关闭package,enter打开文件,command+w关闭文件
左右箭头操作package,enter打开,command+w关闭.gif

command+1展开project, command+N创建文件,选中文件后back键删除文件
command+N创建,back删除.gif

command+5调出debug控制台, command+7调出当前类的类结构, shift+fn+command+f8查看断点
command5,7,shift+fn+command+f8.gif
(重复command+number会关闭)

control+option+N在当前文件所在目录新建文件
control+option+N.gif

command+E:调出最近操作的文件
image.png

command+shift+E:展示最近修改记录,可点击跳转代码片段
Kapture 2020-10-07 at 08.57.43.gif

option+command+左右箭头:在最近编辑的文件间跳转
Kapture 2020-10-07 at 08.32.34.gif

command+p:提示方法形参
command+p.gif

command+shift+enter快速结束语句并加上分号(windows:ctrl+shift+enter):
Kapture 2020-09-11 at 20.32.25.gif

option+enter快速实现接口:
实现接口.gif

但你会发现,在接口中虽然写了方法注释,但实现类里是没有的。怎么才能把接口方法的注释带到实现类里呢?
image.png
Kapture 2020-08-09 at 12.28.24.gif

但上面的方式有个麻烦的地方:每次都要把鼠标移到类名上触发implements。其实可以直接在接口方法上触发:
image.png
但它有个缺点,方法注释又没了…有同学知道更好的方法请告诉我~

上面介绍的是如何写接口文档,那么如何查看接口文档呢?
图片.png
Kapture 2020-11-10 at 11.01.22.gif
option+command+点击,直接跳转接口实现类:
option+command+点击直接跳转实现类.gif

option+command+M抽取方法:
option+command+M抽取方法.gif

option+command+T,try catch必备:
Kapture 2020-09-11 at 20.45.38.gif

再说一个引入Maven依赖的技巧。搭建SpringBoot项目一般都是直接拷贝旧项目,但如果临时有个依赖需要引入,切换到别的项目拷贝有点麻烦,此时可以利用IDEA的快捷键快速导入依赖。
在Pom.xml中command+N:
引入依赖.gif

如果SpringBoot有版本约束,就选择与当前SpringBoot版本匹配的即可:
image.png

自动导包、自动删除无用包:
image.png

如果不勾选第二个选项,我们只能手动删除(windows快捷键我忘了),很麻烦,而且按我的工作经验,如果不及时清理无用的import,提交代码有时会报错。

快捷键手动删除无用包(control+option+o,windows应该是ctrl+alt+o):
control+option+o手动删除无用包.gif

自动删除无用包(不会立即删除,而是有其他输入动作时清理,比如gif图中我随意删除了几个空行触发清理):
自动删除无用包.gif

不建议开启Maven自动导入依赖,万一发现不是自己要的版本,你如果中途退出,会导致当前jar包下载不完整。
还是手动确认导包比较好(个人建议):
image.png
手动确认:
image.png

双击shift,默认只搜索项目代码,若希望同时搜索Spring或JDK源码,记得勾选”Include non-project items”:
图片.png

command+shift+F全局搜索:
image.png

command+shift+R全局替换(慎用):
image.png

一般的文本替换,你可以用command+R(当前文件)或者command+shift+R(全局替换,慎重)
图片.png

但是如果你要更改类名、方法名啥的,建议使用专门的快捷键

类名修改:
image.png
方法名修改:
image.png
这种专门的快捷键有个好处,变量名也会帮你替换,比如:
UsrePojo usrePojo —-> UserPojo userPojo

变量名修改(fn+shift+F6):
图片.png

为实现Serializable接口的POJO生成序列化ID
图片.png
图片.png

一键导出设置

如果后期换电脑了,可以一键导出设置,然后重新导入新的IDEA。插件需要重新安装。
图片.png