如何配置Intellj idea(Android Studio)的注释模板

在日常项目开发过程中,项目组都会有自己的一套默认的注释模板。这里,我们介绍下如何在Intellj idea(由于Android Studio是基于idea的,配置是一样的)中,修改默认的注释模板,以获得我们想要的效果。文中将分别介绍

  • 文件头(File Header)的配置:在创建代码文件时在文件头生成
  • 类的配置:在新建类文件时自动生成,其模板中会解析File Header文件中的内容
  • 方法的配置:配置好模板,根据快捷键生成

一、配置File Header注释模板

在打开的idea工程中,选择File->Setting->Editor->File and Code Templates,在打开的右侧窗口中选取Includes页签下的File Header子项(若不存在该项,则新建一个),如下所示:




看下idea给出的描述信息吧
这是一个内建的模板。它包含了一个通过#parse指令,可被文件模板包含的代码片段。该模板是可编辑的。与静态文本,代码和注释一起,你也可以使用预定义变量,然后它们将像宏一样展开为相应的值。

  • ${PACKAGE_NAME} 被创建新文件的包名。
  • ${USER} 当前用户系统登陆名,这个名字可以在计算机->管理里面做修改。
  • ${DATE} 当前系统日期
  • ${TIME}当前系统时间
  • ${YEAR}当前年份
  • ${MONTH} 当前月份
  • ${MONTH_NAME_SHORT}当前月份名的前三个字母,比如,Jan,Feb等
  • ${MONTH_NAME_FULL} 当前月份名的完整名称,比如,January, February等
  • ${DAY} 月份的当前天
  • ${DAY_NAME_SHORT} 当前天名的前三个字母,比如,Mon,Tue等
  • ${DAY_NAME_FULL} 当前天名的前三个字母,比如,Monday,Tuesday等
  • ${HOUR} 当前小时
  • ${MINUTE} 当前分钟
  • ${PROJECT_NAME} 当前工程名
    通过以上,我们可以知道,该文件会是其它模板文件的内建模板,我们通常可以使用其预定义的变量。下面给出一个模板:
/**
 *  
 * @author: ${USER}
 * @description please add a description here
 * @date: Create in ${TIME} ${DATE}
 */

将以上内容贴到编辑框中,然后点击ApplyOk按钮。接着,新建一个文件后,可以看到如下的结果。

/**
 * @author: killua
 * @description please add a description here
 * @date: Create in 20:20 2018/7/14
 */
public class Demo
{
}

这样子,我们就完成了文件头的配置。

二、配置类注释模板

类模板的配置与文件头大饿配置有点重复的感觉。如果已经配置了文件头后,就不需要再配置该模板了。该模板只针对所有的Class类。如果要为接口添加注释,需要修改相应的模板。
通过File->Setting->Editor->File and Code Templates,打开右侧Files页签下的Class子项,进行配置。


稍微看下说明吧:
这是一个内建的模板,用于在每次你通过选择New->Java Class->Class菜单来创建一个新的Java类的时候。它也可以指定任意数量的自定义变量,格式为${<VARIABLE_NAME>},这种情况下,在你创建新文件前,你将收到一个对话框提示,你可以在里面为所有的自定义变量的特定值。使用#parse指令,可将include tab页汇总的模板包含进来,通过指定期望的模板名作为参数。如#parse("File Header.java")
这里,因为我们以及在include中配置了File Header.java,所以可以不做修改。

三、配置方法模板

idea自带了一个方法模板,但只有param和return字段,不够实用,如下所示:

    /**
     *
     * @param param
     * @return
     */
    private boolean isShow(String param)
    {
        return true;
    }

通过在方法定义上一行中敲击/** + Enter触发模板。
接着,我们来实现我们的自定义模板,通过File-->Settings-->Editor-->Live Templates,然后点击右上角的+,选择Template Group来创建一个新的组,取名为CustomGroup,如图所示。


然后,选择新创建的CustomGroup,然后再次选择+,这次选择Live Templates,新建一个模板到模板组中,如下所示:

这里Abbreviation中填入*(触发条件为/* + 模板名+快捷键),这是触发条件的缩写。第二个框中填入模板的描述,然后,点击底下的define按钮,在弹出框中,选择相应的语言场景。

填入模板内容,如下:

*
 *
 * @author $user$
 * @param $param$
 * @return $return$
 * @date $time$ $date$
 **/

设置参数名时必须用${参数名}$的方式,为了获取param和return的参数,idea提供了内置的几个方法:

  • param通过methodParameters()来获取
  • return 通过methodReturnType()来获取
  • time 通过time()来获取
  • date 通过date()来获取
  • user 通过user()来获取
    通过点击Edit Variables来设置相应的参数值,如下所示:


    最后,修改idea默认的快捷键,将tab改为Enter,如下图所示。

    这样子就完成了方法注释模板的编辑,新建方法后,敲击* + Enter后,效果如下。
    /**
     *
     * @author killua
     * @param [`param1`, parm2]
     * @return
     * @date 12:24 2018/7/15
     **/

但代码检测工具会对参数以红色告警方式显示,这是因为它找不到[param1, parm2]参数。
如果要显示参数列表单独显示那种方式(自带那种方式),只能在方法内部实现,这时候需要将配置的methodParameters()替换为以下脚本:

groovyScript("def result=''; def params=\"*$**{**_1**}\"**.replaceAll('**[\\\\[**|**\\\\]**|**\\\\**s**]**', '').split(',').toList(); for(i = 0; i < params.size(); i++)* *{**result+=' * @param ' + params**[**i**]* *+ ((i < params.size() - 1) ? '**\\**n**\\**b' : '')**}**; return result", methodParameters())*

方法内和外的效果对比,方法外无法获取参数列表

/**
     *
     * @author killua
     * @param null
     * @return 
     * @date 12:22 2018/7/15
     **/
    private boolean isShow(String param1, String parm2)
    {
        /**
         *
         * @author killua
         * @param param1
         * @param parm2
         * @return 
         * @date 12:22 2018/7/15
         **/
        return true;
    }

这几种方式都不算好,因为Intellj idea的/** + Enter不算一个Live Template。这里有个折中的方案,就是同时利用了自带的/** + Enter和新建的Live Template。并在新建模板中添加你额外的属性,如下所示:


注意空格:

@author $USER$ 
    * @since  $DATE$;

然后,先敲击自带的功能/** + Enter,然后继续在注释中敲击auth+Enter获取完整的信息,如下:

  /**
     * 
     * @param param1
     * @param parm2
     * @author killua
     * @since 2018/7/15;
     * @return
     */
    private boolean isShow(String param1, String parm2)
    {
        return true;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容