LiveTemplate

322 阅读3分钟

分享自己idea中常用的LIveTemplate,提高编写代码效率

注释

abbreviation:*

template text:

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

Edit variables:

image-20230608144826617.png

# 具体参数表达式param

 groovyScript("def result = '';def params = \"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param ' + params[i] + ((i < params.size() - 1) ? '\\r\\n ' : '')}; return result == '' ? null : '\\r\\n ' + result", methodParameters())
 
 # 具体参数表达式return
  groovyScript("return \"${_1}\" == 'void' ? null : '\\r\\n * @return ' + \"${_1}\"", methodReturnType())

效果:

image-20230608145238722.png

打印日志

abbreviation:logm

template text:

log.info($content$,$params$);

Edit variables:

image-20230608145514383.png

# 具体参数表达式content
groovyScript("def params = _2.collect {'['+it+' = {}]'}.join(', '); return '\"' + _1 + '() called with parameters => ' + (params.empty  ? '' : params) + '\"'", methodName(), methodParameters())

# 具体参数表达式params
groovyScript("def params = _1.collect {it}.join(', '); return   (params.empty  ? '' : params) ",  methodParameters())

效果:

image-20230608145724995.png

定义对象List

abbreviation:dlobj

template text:

List<$OBJECT$> $OBJECT$List = new ArrayList<>();
for (int i = 1; i < 6; i++) {
  $OBJECT$ $ENTITY$ = new $OBJECT$();
  $END$
  $OBJECT$List.add($ENTITY$);
}

Edit variables:

image-20230608150139758.png

效果:

image-20230608150720891.png

Expression函数整理

表达式含义
annotated()返回具有指定注解的类,方法或字段名
arrayVariable()返回当前范围内数组变量,最近的优先展示
lineCommentStart()返回当前语言指示行注释开始的字符
blockCommentStart()返回当前语言指示块注释开始的字符
blockCommentEnd()返回当前语言指示块注释结束的字符
commentStart()返回当前语言指示注释开始的字符,对有行注释的返回行注释开头
commentEnd()返回当前语言指示注释结束的字符,对有行注释的返回空(行注释通常没有结束字符)
camelCase()将字符串转换为驼峰形式
snakeCase()将字符串转换为下划线分割形式
spaceSeparated()将字符串转换为空格分开形式
spacesToUnderscores()将字符串的空格替换为下划线
capitalize()将字符串首字母设为大写
capitalizeAndUnderscore()将字符串转换为大写并用下划线隔开
decapitalize()将字符串首字母设为小写
underscoresToCamelCase()将下划线形式字符串转换为驼峰形式
underscoresToSpaces()将下划线形式字符串转换为空格隔开形式
lowercaseAndDash()将字符串转为小写并使用中划线分割
escapeString()将字符串中的特殊符号进行转义,便于在java字符串中使用
substringBefore(, )截取字符串在之前的部分
firstWord()返回字符串中的首个单词
castToLeftSideType()获取左侧变量的类型判断是否需要强转
rightSideType()获取右侧表达式的变量类型
className()返回当前所在类(在内部类则返回内部类)类名
currentPackage()返回当前所在包名
qualifiedClassName()返回当前所在类(在内部类则返回内部类)的全限定类名(包+类名)
classNameComplete()触发类名相关的代码补全
clipboard()返回系统剪贴板的内容
complete()调用一次代码补全,相当于调用一次Ctrl+Space
completeSmart()调用一次智能代码补全,相当于调用一次Ctrl+Alt+Space
componentTypeOf()返回数组类型
concat(, …)拼接字符串
date([format])指定格式化方式返回当前系统时间字符串(根据SimpleDateFormat格式)
time([format])指定格式化方式返回当前系统时间字符串(无日期,根据SimpleDateFormat格式)
descendantClassesEnum()返回指定类的子类
lineNumber()返回当前行行号
enum(, …)返回建议的字符串列表
expectedType()自动识别并返回期望的类型,一般用于赋值,方法参数,返回语句处。
fileName()返回当前文件名(带拓展名)
fileNameWithoutExtension()返回当前文件名(不带拓展名)
filePath()返回当前文件路径(带拓展名)
fileRelativePath()返回当前文件相对当前项目的路径(带拓展名)
groovyScript(, [arg, …])执行作为字符串形式传递的groovy脚本
guessElementType()返回集合中元素的类型
iterableComponentType()返回可迭代对象的类型
iterableVariable()返回当前范围内可迭代类型对象,最近的优先展示
methodName()返回当前所在方法名
methodParameters()返回当前所在方法的所有参数名
methodReturnType()返回当前所在方法的返回类型
regularExpression(, , )查找字符串中满足的所有部分并替换为
typeOfVariable()返回变量的类型
variableOfType()返回当前范围内满足类型条件的变量,最近的优先展示
suggestFirstVariableName()返回当前范围内满足类型条件的部分变量,最近的优先展示和variableOfType类似但不推荐true,false,this,和super
subtypes()返回指定类型的子类型
suggestIndexName()返回当前范围中未使用的第一个常用迭代下标变量名(i,j,k等)
suggestVariableName()根据变量命名规则的代码风格设置返回建议的变量名
suggestShortVariableName()建议的变量名精简版
user()返回当前系统的用户名称

得到剪切板小写类名: decapitalize(groovyScript("_1.tokenize('.')[-1]", clipboard()))