目录
live template是idea中提高效率的利器之一,以前看过一些教程,平时经常在使用,减少了我很多繁复的工作,但是没有系统的去整理过,最近准备系统的整理下,主要是自己平时用到的和官方文档的说明,如果有不正确的地方。
定义: Live template可以让你快速、高效、正确的插入平时经常使用的或者自定义的代码片段。
在开始之前,为了引起大家的兴趣,我们先来看下使用live template的演示效果:
上面使用的就是live template,其中有预定义的sout,psvm和fori,还有自定义的todo和log等。可以看到使用live template可以用缩略词产出设置好的代码片段。
live template一共有三种类型分别是简单、参数化和环绕类型。
路径如下图箭头1处:
如图中所示,iterations是idea自带的group,fori是缩略词,顾名思义这个组是针对迭代等操作的。
在使用时我们可以输入10.fori,list.fori或者直接输入fori然后按tab键(箭头7处)插入代码。idea会根据上下文生成不同的代码片段,如10.fori直接生成了“for (int i = 0; i < 10; i++) {”,而直接输入fori则是“for (int i = 0; i < ; i++) {”,注意此时10没有自动生成需要你手动输入。
我们可以点击2处新建自己的template,template的缩略词在同一group内不能重复,所以为了不和自带的键重复我们最好新建自己的一个group比如MY,不同的group中的缩略词可以重复。箭头5是描述用来助记的。
我们来自定义一个如下图:
图中是一个非常常用的输入,根据类名来生成log静态变量。你可以看到用$包裹的字符,这个就是上面介绍的参数类型,在生成的代码片段中,如果要输出$,需要用$转义,即输出$则在代码片段中输入$$。系统自带两个预定义的只读变量,$END$和$SELECTION$,$END$代表代码片段展开后光标最终停留的位置(如果有用户自定义变量且需要用户输入的话则会一次停留在用户变量处),默认如果不写$END$光标会停留在最后,如果加和不加效果是一样的。$SELECTION$代表的是你用光标选中的所有字符,属于环绕类型,等会用例子会很明白。用户变量需要我们赋值,点击edit variables,在箭头2处进行编辑。可以输入两种,一种是直接输入字符串(需要用双引号包裹)用的比较少因为是写死的,另一种是idea的预定义函数(即通过下拉菜单选择),比如这里就是取类名。idea有很多预定义的函数,比如日期,行数,方法名,作者等等。一般用到这些预定义的函数就已经足够了,但是有时复杂的输出,就需要使用groovy脚本(下拉菜单groovyScript,这里需要用到的语法很简单)来进行。比如输入方法的所有参数,如下图:
我自定义了一个info(代码片段:"$CLASS$.$METHOD$ linenum:$LINE$, param:{$PARAM$} info:$MY$"$END$),输出了类名、方法名、行数和参数,这些信息在记录日志的时候非常有必要。其中$PARAM$变量就用到了脚本。我们来看下
// methodParameters是预定义函数,其中双引号里的就是脚本,_1占位符只带methodParameters参数
groovyScript("_1.collect { it + ' = [\" + ' + it + ' + \"]'}.join(', ') ", methodParameters())
关于备份和分享:live template文件保存在“{user}\{version}\config\templates”,user是指用户目录,version是idea目录,如我的目录就是C:\Users\chen.IntelliJIdea2017.3\config\templates,其中的文件名以group为名字。也可以在在File->Export Settings对话框中选中live template可以保存配置。
说明:在设置变量的值时有一列是Skip if define,这一列的意思是,如果有值了是否跳过(即光标是否停留),光标停留的位置是变量对话框中的顺序来定的,可以用右边的箭头排序。如果所有的变量填充完了便会跳到$END$变量的位置,如果没有定义$END$则跳到代码片段结尾。
win平台默认的快捷键主要是三个ctrl+j(insert live template)、ctrl+alt+j(sround with live template)和ctrl+alt+t(sround with)。
快捷键是live template中经常需要用到的,所以需要记住。由于每个平台不一样,也有可能有人修改了快捷键,所以我用括号注明了快捷键对应的名字,如果你的idea该快捷键不生效可以直接按图中搜索名字。
这里就需要重点介绍下包裹的代码片段,其实就是指的你用光标选中的代码。使用这种代码片段需要我们用光标去选择然后输入快捷键ctrl+alt+t或者ctrl+alt+j选中需要的使用的缩略词。在自定义的代码片段中有个自带的$SELECTION$指的就是你用光标选中的代码,在插入代码片段时,就会将你选中的代码插入到$SELECTION$。让我们在实现一个带包裹代码片段的sloge,设置如下:
注意设置中箭头的位置,选择java,表示快捷键应用的上下文。
使用方法: 用鼠标选中代码,输入ctrl+alt+j或者ctrl+alt+t选择sloge。如下图:
我自定义了几个非常常用的代码片段,分别是
// 代码片段
"$CLASS$.$METHOD$ linenum:$LINE$, param:{$PARAM$} info:$MY$"$END$
// 变量定义
$CLASS$:className()
$METHOD$:methodName()
$LINE$:lineNumber()
$PARAM$:groovyScript("_1.collect { it + ' = [\" + ' + it + ' + \"]'}.join(', ') ", methodParameters())
// 代码片段
/* ---------------- $E$ -------------- */$END$
// 代码片段
private static final Logger logger= LoggerFactory.getLogger($CLASS$.class);
// 变量定义
$CLASS$:className()
// 代码片段
// comment --$USER$-- $D$ ------>$ANNOTATION$
// 变量定义
$USER$:"chenfangzhi"
$D$ :date("YYYY-MM-DD hh:mm:ss")
// 代码片段
// todoBy$USER$ ---- $D$ ------>$TODO$
// 变量定义
$USER$:"chenfangzhi"
$D$ :date("YYYY-MM-DD hh:mm:ss")
说明:todo的作用我就不讲解了,这里的第4和第5项可能很像,有很多地方需要标注是谁操作的,现在的项目很多都是多人开发,如果都是使用默认的todo,就会很混乱,这时候我们就需要自己来定义属于自己的todo注释,这时候就需要带上名字。代码片段可以自己定义,可以同时带上todo和名字,这样在查看todo列表的时候就可以进行筛选。如下图:
图上有两个todo,在todo列表中可以点击箭头2处的过滤器筛选自己想要的看到的类型。我就是直接看chen这个类型。2处有个Edit Filter可以编辑过滤类型,很简单的正则匹配。
Original url: Access
Created at: 2019-09-27 15:40:04
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论