IntellJ IDEA 基础之 常用快捷代码段生成的简单整理(代码生成利器: Live Templates(含如何自定义自己的快捷代码段))

IntellJ IDEA 基础之 常用快捷代码段生成的简单整理(代码生成利器: Live Templates(含如何自定义自己的快捷代码段))

目录

IntellJ IDEA 基础之 常用快捷代码段生成的简单整理(代码生成利器: Live Templates(含如何自定义自己的快捷代码段))

一、简单介绍

二、演示操作环境

三、常用的快捷代码段生成(Java为例)

1、fori 快速生成 for 循环代码段

2、geti 快速生成 单例获取 getInstance 代码段

3、ifn 快速生成 判断是否 ==null 的 if 语句 代码段

4、 inn 快速生成 判断是否 !=null 的 if 语句 代码段

5、lazy  快速生成 判断指定类变量是否 ==null ,== null 则new 该类变量的 if 语句 代码段

 6、main  快速生成 静态 main 函数 语句 代码段

7、psvm 快速生成 静态 main 函数 语句 代码段

8、 mn 快速生成 判小取小 语句 代码段

9、 mx 快速生成 判大取大 语句 代码段

10、prsf 快速生成 私有静态常量 语句 代码段

11、psf 快速生成 公有静态常量 语句 代码段

12、psfi 快速生成 公有静态常量 int 语句 代码段

13、 psfs 快速生成 公有静态常量 String 语句 代码段

14、 serr 快速生成 err打印语句 语句 代码段

15、 sout 快速生成 out打印语句 语句 代码段

16、 thr 快速生成 抛出异常 语句 代码段 

附录 Live Templates 自定义自己的快捷代码段

一、模板定义

二、模板变量表达式含义表

三、变量表达式定义和演示


一、简单介绍

IntellJ IDEA 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。

本节介绍,IIntellJ IDEA 基础常用快捷代码段生成的使用,这里简单以 java 为例,其实大家也可以自定义自己的代码段呢,这里做简单整理,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本工具(Git、SVN、GitHub 等)、JUnit、CVS 整合、代码分析和创新的 GUI 设计等方面的功能都值得称道。IDEA 作为现今最常用的开发工具之一,如果我们能够熟悉其快捷键,自然可以让我们在编写代码的过程中得心应手,挥洒自如。
 

Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。

二、演示操作环境

1、Windows 10

2、IntellJ IEDA 2021.2.3

三、常用的快捷代码段生成(Java为例)

系统自带的这些快捷代码段生成设置,可以在 File - Settings 中的 Live Templates 中对应查找自己需要的语言中查找。

1、fori 快速生成 for 循环代码段

(注意:在函数里才有效)

2、geti 快速生成 单例获取 getInstance 代码段

3、ifn 快速生成 判断是否 ==null 的 if 语句 代码段

4、 inn 快速生成 判断是否 !=null 的 if 语句 代码段

5、lazy  快速生成 判断指定类变量是否 ==null ,== null 则new 该类变量的 if 语句 代码段

 6、main  快速生成 静态 main 函数 语句 代码段

7、psvm 快速生成 静态 main 函数 语句 代码段

8、 mn 快速生成 判小取小 语句 代码段

9、 mx 快速生成 判大取大 语句 代码段

10、prsf 快速生成 私有静态常量 语句 代码段

11、psf 快速生成 公有静态常量 语句 代码段

12、psfi 快速生成 公有静态常量 int 语句 代码段

13、 psfs 快速生成 公有静态常量 String 语句 代码段

14、 serr 快速生成 err打印语句 语句 代码段

15、 sout 快速生成 out打印语句 语句 代码段

16、 thr 快速生成 抛出异常 语句 代码段 

附录 Live Templates 自定义自己的快捷代码段

参考博文:Idea Live Templates配置详解及演示

Live Templates是一个便捷的定义代码模板的方式,该配置通常的触发方式为快捷键Ctrl + JCtrl + Alt + J,其中提供了种类繁多的预定义模板,便于方便开发者使用。
在官方预定义模板之外Idea亦拥有足够全能的变量定义表达式让开发者定义心仪的代码模板。

一、模板定义

1、活动模板

活动模板不依托于某个代码块,直接输入即可以触发,或者使用快捷键Ctrl+J主动触发。

在Setting -> Editor -> Live Templates中可以自定义活动模板。

活动模板的自定义支持多任务光标,一个变量即是一个任务光标,可用 E N D END END标记结束光标。

在底部可以修改适用范围,勾选Java -> statement就可以适用于Ctrl+J或空白输入。

执行后效果如下:

2、环绕模板

环绕模板依托于某个代码块,使用快捷键Ctrl+Alt+J触发。

定义时使用 S E L E C T I O N SELECTION SELECTION标记被环绕的代码块。

使用时若光标无选中代码块,则以当前行为环绕对象,否则以选中代码块为环绕对象。

演示:

二、模板变量表达式含义表

以下是定义变量时支持的表达式基本含义(当匹配多个结果时结果将出现在待选列表中):

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

三、变量表达式定义和演示



1、annotated(<annotation>) 

定义时在括号内传入注解的全限定类名:

演示:

2、arrayVariable

返回类字段,或方法变量中的数组类型变量名称。离得近的将被优先推荐

演示:

 

3、lineCommentStart~commentEnd

lineCommentStart,blockCommentStart,blockCommentEnd,commentStart和commentEnd在不同的语言环境中表现是不一致的。

lineCommentStart返回当前语言中指示行注释开始的字符。

blockCommentStart和blockCommentEnd则返回当前语言中指示块注释开始,结束的字符。

commentStart和commentEnd视情况而定,若当前语言有行注释则与lineComment表现一致(行注释通常没结束标记commentEnd为空),若没有行注释则与blockComment表现一致。

  

 演示:

4、camelCase(<String>)~firstWord(<String>)


camelCase(<String>)

参数内容转换为驼峰形式。可以转换空格,下划线,中划线分割的字符串(之后的一些表达式也都是类似机制,因此不再单独录制演示)。

演示:

5、snakeCase(<String>)

将参数内容字符串转换为下划线分割形式,例如将user name,userName,user-name转换为user_name

6、spaceSeparated(<String>)

将字符串转换为空格分开形式(不会改变原来的大小写状态),例如将userName,user Name和user-Name转换为user Name

7、spacesToUnderscores(<String>)

将字符串的空格替换为下划线,例如将user name转换为user_name,将user name(两个空格)替换为user__name


8、capitalize(<String>)

将字符串首字母设为大写,例如将username转换为Username


9、capitalizeAndUnderscore(<String>)

将字符串转换为大写并用下划线隔开 ,例如将UserName,user name和user-name转换为USER_NAME


10、decapitalize(<String>)

将字符串首字母设为小写,例如将Username转换为username


11、underscoresToCamelCase(<String>)

将字符串下划线形式转换为驼峰形式,例如将user_name转换为userName,将user_NAME转换为userName,将USERNAME转换为username。


12、underscoresToSpaces(<String>)

将字符串下划线替换为空格,例如将user_name转换为user name。


13、lowercaseAndDash(<String>)

将字符串转换为小写并用中划线隔开 ,例如将UserName,user name和user_name转换为user-name。


14、escapeString(<String>)

对字符串中的特殊字符进行转义,以便在java字符串中进行使用。例如将"转换为\"。

15、substringBefore(<String>, <Delimeter>)

截取字符串在<Delimeter>之前的部分 ,例如substringBefore(“fileName.zip”,".")返回fileName。

16、firstWord(<String>)

返回字符串中的第一个单词。例如user name返回user

17、castToLeftSideType与rightSideType

由于castToLeftSideType需要比对左右侧变量类型,左侧类型可以等待任务光标完成编辑,右侧却不行,因此任务光标到达castToLeftSideType变量处时,右侧变量需要是已知类型。

演示:

 

rightSideType可以获取右侧类型作为默认值,因此任务光标到达时右侧变量也需要是已知类型。需要注意的是rightSideType似乎必须定义一个默认值,否则将获取不到任何提示。 

演示: 

18、className~qualifiedClassName

className返回当前类名,可用作构造函数预定义构造函数,日志对象之类的模板。

currentPackage返回当前包名。

qualifiedClassName则是二者的拼接。

演示:

 

19、clipboard

返回剪贴板内容。

演示:

 

20、componentTypeOf(<array>)

返回参数的数组类型 。

演示:

 

21、concat(<String>, …)

拼接参数中的所有字符串。

22、date([format])

指定格式化方式返回当前系统时间字符串,格式化字符串遵循SimpleDateFormat格式。

 

演示:

date模板演示

23、descendantClassesEnum(<String>)

返回指定类的子类。

descendantClassesEnum模板配置

 演示:

24、enum(<String>, …)

自行指定返回的字符串列表。

enum模板配置

演示:

25、expectedType

自动识别并返回期望的类型,可以用于赋值,方法参数,返回语句处。

 

演示:

 

26、fileName~fileRelativePath

fileName返回当前文件名(带拓展名)。

fileNameWithoutExtension返回当前文件名(不带拓展名)。

filePath返回文件全路径(带拓展名)。

fileRelativePath返回文件相对当前项目的路径(带拓展名)。

 演示:

27、groovyScript(<String>, [arg, …])

执行作为字符串形式传递的groovy脚本,第一个参数为脚本内容或脚本文件路径 ,之后的参数都为可选参数。

如果要在脚本中调用可选参数可以使用*_1,_2,_3以此类推,要访问当前编辑器可以使用_editor*变量。

此段脚本为两个变量做一个简单的拼接:

 演示:

28、guessElementType(<Collection>)

返回集合中的泛型类型。

 

演示:

 

29、iterableComponentType(<Iterable>)

返回可迭代对象中的泛型类型,使用于数组,对象及其他任意实现Iterable接口的对象。

演示:

iterableComponentType模板演示

30、classNameComplete

触发一次类名相关的补全提示。

演示:

31、methodParameters

获取所有的参数名,返回时在外面拼接[]。

演示:

32、regularExpression(<String>, <Pattern>, <Replacement>)

查找字符串中满足<Pattern>的所有部分并替换为<Replacement> ,支持所有标准正则表达式。

演示:

regularExpression模板演示

33、typeOfVariable(<String>)

返回变量的类型。

typeOfVariable模板配置

演示:

typeOfVariable模板演示

34、variableOfType(<String>)~ subtypes(<String>)

variableOfType返回所有满足类型条件的变量,如果传入""则会返回所有的可用变量,距离较近的变量优先展示。

suggestFirstVariableName和variableOfType类似,但不会推荐true,false,this,和super。

subtypes返回指定类型的子类型。

演示:

猜你喜欢

转载自blog.csdn.net/u014361280/article/details/120987782