IDEA是一款众所周知的Java集成开发环境,其功能非常强大,今天给大家介绍IDEA模版的创建和使用。
IDEA的模版功能可以让我们定义出开发中常用语句的缩写,IDEA根据模版的缩写自动的帮助我们展开,其效果如下:
模版的分类
-
简单模版:其只是设置一些固定的纯文本内容。这种模版就是简单的缩写替换。比如在代码中输入prsf,并按下回车,IDEA会自动的将其替换成 private static final 语句。
-
参数化模版:其可以设置一些变量,这样我们就可以在替换成输入我们想要的变量。比如我们在代码中输入fori,并按下回车,IDEA会自动的将其替换成下面的代码:
for(int i = 0; i < ; ++i) { }
-
Surround模版:其可以选中一段代码作为模版中的实现部分。比如你在IDEA中输入 C,并按下回车,IDEA会自动的将其替换成下面的代码:
Callable<Object> callable = new Callable<Object>() { public Object call() throws Exception { } };
并且Surround模版可以选中一段代码,按下option + command + t快捷键,该模版可以将你选中的代码段放在call函数的函数体中。
Callable<Object> callable = new Callable<Object>() { public Object call() throws Exception { //你选中的代码段 } };
模版的创建
在IDEA的Preferences --> Editor --> Live Templates或者使用快捷键command + ,(逗号)中设置,选择Java,并且点击右上角的“+”号来添加自定义的模版。
其中,Abbreviation中写入你的模版缩写,Description中写入你对这个缩写的描述,Template text中写入模版的扩展代码(缩写想替换的代码)。同时需要在Template text下面的应用内容上选择一项,代表该模版的应用范围,常用的的范围有Declaration(声明的地方)、Statement(函数体)等。
在创建模版的右下角有一些选项复选框可供我们勾选:
- Expand With:我们在进行扩展(替换)时需要按下什么键
- Reformat according:是否根据风格去设置扩展后代码的风格
- use static import if possible:如果可能使用静态导入
- Shorten FQ names:表示可以截断全限定名(包名+类名),并且自动导入所需的包。比如我们在Template text中写了java.util.List,那么在扩展的时候会自动的从包名截断,只剩下类名,并且会自动导入java.util包
对于参数化模版和Surround模版来说,可以设置一些变量,通俗的来说,这些变量可以帮助我们在展开的过程中占着位置,我们可以自己进行输入,当然变量也可以设置默认值。为了和代码区别,变量会被两个$符号包围。展开后,光标会自动停在第一个变量所在的位置供我们输入我们想输入的code,并且输入完毕按下Enter键可以自动的跳到第二个变量处。IDEA有两个预定义的变量:
- $END$:代表到达尾部了,此时再按Enter键不会继续向后跳了。
- $SELECTION$:使用在Surround模版中,代表选中的代码段。 除了以上的两个变量,想使用其他变量都是需要自己定义的。
通过在Live Templates中选中一个模版,然后点击右下角的Edit variables,会出现一个Edit Template Variables对话框,在这个对话框中设置该模版使用到的变量。
Edit Template Variables对话框有四个字段:
- Name:变量的名字
- Expression:表达式,这个字段会在定义相对复杂的模版时使用到,IEDA提供了一些函数供我们使用,后面会介绍
- Default value:变量的默认值
- Skip if defined:如果定义了就跳过选项 变量定义完成后,在template text中就可以使用了。
IDEA模版变量中有58个函数可以使用,以下列举几个常见的函数:
- suggestIndexName():在迭代中返回一个建议的Index Name,i,j,k...依次向后排。比如我们在定义使用循环的模版时,在定义变量时可以使用该函数来生成建议的索引下标
- suggestVariableName():根据设置的代码风格,基于变量的类型设置一个建议的变量名
- arrayVariable():返回在当前范围内最近声明的数组,如果有多个数组的话,默认会选择最近的那个,但是在修改变量的时候,其他的数组会被列出来供你选择
- componentTypeOf():返回array中数据类型,array是我们定义的数组变量名,比如:使用arrayVariable()函数的变量名
- 想要了解其他函数,可以去本文开头提供的IDEA的官方文档中查看。
模版的共享
如果你想和别人共享你的模版,你可以在IDEA的配置路径(~/Library/Application Support/JetBrains/)下的templates里面找到相应组的xml文件,就可以将该文件分享给其他人。
说明:本文的操作都是基于Mac系统,如果是其他系统可以去官网文档中查看IDEA的配置路径