IDEA中的Live Template

552 阅读4分钟

Intelli IDEA官方文档

IDEA是一款众所周知的Java集成开发环境,其功能非常强大,今天给大家介绍IDEA模版的创建和使用。

IDEA的模版功能可以让我们定义出开发中常用语句的缩写,IDEA根据模版的缩写自动的帮助我们展开,其效果如下:

LiveTemplatesExample.animated.gif

模版的分类

  • 简单模版:其只是设置一些固定的纯文本内容。这种模版就是简单的缩写替换。比如在代码中输入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,并且点击右上角的“+”号来添加自定义的模版。

idea的templates.png 其中,Abbreviation中写入你的模版缩写,Description中写入你对这个缩写的描述,Template text中写入模版的扩展代码(缩写想替换的代码)。同时需要在Template text下面的应用内容上选择一项,代表该模版的应用范围,常用的的范围有Declaration(声明的地方)、Statement(函数体)等。

在创建模版的右下角有一些选项复选框可供我们勾选: templates的选项.png

  • 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对话框,在这个对话框中设置该模版使用到的变量。 templates中变量的定义.png

Edit Template Variables对话框有四个字段:

  • Name:变量的名字
  • Expression:表达式,这个字段会在定义相对复杂的模版时使用到,IEDA提供了一些函数供我们使用,后面会介绍
  • Default value:变量的默认值
  • Skip if defined:如果定义了就跳过选项 变量定义完成后,在template text中就可以使用了。

template的变量使用.png

IDEA模版变量中有58个函数可以使用,以下列举几个常见的函数:

  • suggestIndexName():在迭代中返回一个建议的Index Name,i,j,k...依次向后排。比如我们在定义使用循环的模版时,在定义变量时可以使用该函数来生成建议的索引下标
  • suggestVariableName():根据设置的代码风格,基于变量的类型设置一个建议的变量名
  • arrayVariable():返回在当前范围内最近声明的数组,如果有多个数组的话,默认会选择最近的那个,但是在修改变量的时候,其他的数组会被列出来供你选择
  • componentTypeOf():返回array中数据类型,array是我们定义的数组变量名,比如:使用arrayVariable()函数的变量名
  • 想要了解其他函数,可以去本文开头提供的IDEA的官方文档中查看。

模版的共享

如果你想和别人共享你的模版,你可以在IDEA的配置路径(~/Library/Application Support/JetBrains/)下的templates里面找到相应组的xml文件,就可以将该文件分享给其他人。

说明:本文的操作都是基于Mac系统,如果是其他系统可以去官网文档中查看IDEA的配置路径