在IDEA中快速敲出常用的代码

本文介绍如何通过IDEA中的代码模板机制,来快速生成可用的代码。

需求

日常开发中,有一些代码经常写,如果能把这些代码做成模板,只需要输入简短的指令,就可以自动生成完整的代码片段,那应该是一件很让人愉快的事情。

IDEA的Live Template就提供了这样的功能:

Live Templates介绍

只需要输入sout,系统会自动弹出提示,按下Tab或者Enter,就会生成完整的代码。

配置

sout是系统自带的Live Template,在Settings -> Editor -> Live Templates,在output节点下可以看到sout的配置:

在配置里,有几个地方需要注意:

Abbreviation

意为“缩写”,在写代码的时候就是通过输出缩写继而生成完整代码的,所以这个项务必关注。

Description

意为“描述”,因为Abbreviation需要尽量的简短、便于记忆,所以相似功能的Live Template,其Abbreviation一般也是很相似的。提供Description,就可以在IDEA的代码提示中,根据这一项来区分到底是哪一个。

Template text

在这里输入完整的代码片段,它是最终的结果。sout的Template text为System.out.println($END$);,其中$END$是系统的自定义变量,光标最终停下来的位置。

系统自带的变量,除了$END$之外,还有一个$SELECTION$,表示所选择的部分。当代码模板需要将你选择的内容作为Template text的一部分时,可以使用这个变量。这种特性在IDEA中称为Surround With,使用快捷键Ctrl + Alt + T可以弹出,效果图是这样的:

除了这两个系统变量之外,我们还可以自定义变量。每个变量都是以$开始和结束,中间放变量的名字。每一个变量都是一个光标的位置,在Expand的时候,光标会从左到右依次停下来,让你补充内容。按Enter键跳到下一个位置。

IDEA虽然只提供了两个系统变量,但是提供了大量的函数,我们可以Edit variables,绑定合适的函数,这一点后面再介绍。

Options

Expand With选项用来指定从输入的Abbreviation,展开为Template text的按键,默认是Tab按键,不过Enter也有效。

Reformat表示代码格式化,应该选中这个。

Shorten FQ names表示缩写类的全称限定名。这个一般需要勾选,帮助你把模板里的全称限定名对应的类import,然后使用的地方改成缩写。

Applicable Context

这个在配置的最底部,有个Change链接,点进去可以选择当前的模板可以使用在哪个地方。比如sout是用在Java Statement中的,那么你就不可以在方法之外使用它。

在上个图中,Ctrl + J来弹出可选择的Live Templates,这样可以过滤掉其他的代码提示。

自定义Live Template

目前我们已经掌握了Live Templates配置的关键部分,现在开始编写自己的Live Templates吧。

比如我一般使用slf4j作为日志输出的工具,在类里使用类名定义一个logger,比如:

1
2
3
public class LiveTemplateTest {
private static Logger logger = LoggerFactory.getLogger(LiveTemplateTest.class);
}

我想把这个配置成模板,可以按照下面的操作:

先选中需要制作成模板的代码片段,然后选择Tools -> Save as Live Template…,也可以直接在设置里添加。自定义的Live Template会默认放在user组里面。

我的配置:

Template text中使用了org.slf4j.Logger的全限定名,但是因为勾选了Shorten FQ names,生成的结果会自动精简。

这里面还使用了一个自定义变量$CLASS_NAME$,它用来代表当前类的名称。但是必须先把它跟一个系统的函数进行绑定,它才会生效。

这里选择的className()函数就是指当前的类名。其他更多的函数的介绍,请参考live-template-variables

因为我需要在声明区域使用,所以Applicable Context选择的是Java declaration。

看一下最终的效果:

自定义的Live Templates会分组存放成一个xml文件,Windows下的位置是:C:\Users\user-name.IntelliJIdea2016.2\config\templates。如果你需要共享或者同步,拷贝这里的文件。

Live Template就介绍到这里,希望大家善用。

参考

  1. live-templates-introduce
  2. Idea的live template参数中的预定义功能
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×