参赛作品
今天,我想对Jetbrains的WBS中的模板做一个简短的概述。 下面的示例将在Intellij IDEA中用Java实现,但是创建机制对于公司的其他语言和产品是相同的。 我认为该IDE中的所有程序员都使用内置模板。 例如,当您编写fori时,按TAB或ENTER键,您将获得一个for循环,您需要在其中指定变量名称和条件,并为您生成其余代码。
for (int i = 0; i < ; i++) { }
或sout-> System.out.println(),所有Java程序员都熟悉。 因此,Intellij支持创建自己的代码模板。 出乎意料的是,当我遇到此功能时,尽管发现它可以大大加快速度并有助于开发,但我发现几乎没有俄语信息,也没有很多英语信息(因为有很好的
文档资料 )。 现在,当他们到处走走时,我决定写一篇简短的文章。 也许它将对经验不足的程序员有所帮助,他们自己将能够弄清一切或长期使用它,但是我认为它非常适合其他所有人。 因此,让我们开始吧。
建立范本
首先,让我们举一个简单的示例,例如logger常量。 转到
设置->编辑器->动态模板 。 在这里,您可以查看现成的模板组并创建自己的模板-单击面板右侧的加号。 您也可以创建一个单独的模板,然后将其添加到用户组。 单击后,将在下面显示一个窗口,您需要在其中输入模板的缩写,描述和实际文本。 还会有一个警告题词“
No适用的上下文 ”和旁边的“
定义”按钮,单击该按钮我们将看到可能的上下文列表-HTML,XML,Java,Javascript,CSS等。 有些包含子项,例如,在Java中,它是在方法,注释,类级别,其他位置或任何地方一次使用模板的功能。 让我们以整个Java包为例。
我们将日志写为缩写,下面是这样的一行作为测试:
private static final Logger LOGGER = Logger.getLogger($CLASS_NAME$.class.getName());
接下来,点击右侧的按钮-
编辑变量 。 在打开的窗口中,我们看到一个包含一条记录的表-CLASS_NAME,它对应于我们在文件文本中指定的变量作为类名。 它具有字段“
表达式” ,“
默认值” ,“
跳过”(如果已定义) 。 第一个字段是一个选择,其中向我们提供了可以替换的所有值。 第二条只是一行,我们可以在其中引用任何内容。 好吧,如果在第一个属性之一中指定了变量,则第三个字段可让我们跳过对变量的编辑。 在我们的例子中,我们需要从
Expression字段中
选择className()的值。 如果需要,您可以选择编辑密码。 单击“
确定” ,在“
应用”之后,您可以进行检查。 我们用任何名称创建一个类,在日志中输入内容,按
TAB键并按voila-我们有一个记录器,该记录器使用当前类的名称代替了CLASS_NAME。
一个例子:
public class CodeTemplates { private static final Logger LOGGER = Logger.getLogger(CodeTemplates.class.getName()); }
功能特点:
1.创建模板时,有一个键变量
$ END $指示创建模板
时光标的位置(默认情况下,在模板代码的末尾)。
System.out.println($END$);
2.第二个关键变量是
$ SELECTION $ 。 如果模板中存在它,则它将出现在“
环绕声”菜单中(
Ctrl + Alt + T )。 如果要包装代码,这是必需的。
System.out.println("$SELECTION$");
假设您有一个单词或句子,例如TEST-将光标放在单词的末尾,按Ctrl + Alt + T,然后在可以选择自己的模板中选择,然后得到:
System.out.println("TEST");
PS:对于代码或文本块,只需先选择它即可。
3.扩展中的某些扩展名可以采用各种类型的值作为参数,包括其他扩展名。 为了更加清楚,我将举一个例子。 也许许多人都熟悉JPA
Table批注,除其他外,您可以在其中传递与该类(实体)相对应的表的名称。 通常,表名和类名是相同的,唯一的区别是className变为CLASS_NAME。 用于创建此注释的模板如下所示:
@Table(name = "$TABLE NAME$")
在扩展中,选择
capitalizeAndUnderscore(String) ,仅使用我们自己指定的className代替String:
capitalizeAndUnderscore(className)
一个例子:
@Table(name = "CODE_TEMPLATES") public class CodeTemplates { ... }
PS:您也可以像输入中一样在“扩展名”字段中选择自己的值,但我看不到重点,因为您可以在“默认值”字段中执行此操作。
4.也可以以jar文件的形式导入(
文件->导入设置 )和导出(
文件->导出设置 )模板和其他设置。 由于模板是作为xml文件导出的,因此您可以选择转到.IntelliJIdea $ VERSION $ / config / templates目录,然后在其中添加xml。 在这种情况下,您需要在文件中指定一组模板,否则您将不会在列表中看到它们。 如果未指定组,则可以将各个模板作为选项-user.xml添加到现有文件之一。
带有记录器和
Table的示例user.xml:
<templateSet group="user"> <template name="log" value="private static final Logger LOGGER = Logger.getLogger($CLASS_NAME$.class.getName());" description="Logger Template" toReformat="false" toShortenFQNames="true"> <variable name="CLASS_NAME" expression="className()" defaultValue="" alwaysStopAt="true" /> <context> <option name="JAVA_DECLARATION" value="true" /> </context> </template> <template name="tb" value="@Table(name = "$TABLE_NAME$")" description="" toReformat="false" toShortenFQNames="true"> <variable name="TABLE_NAME" expression="capitalizeAndUnderscore(className)" defaultValue="" alwaysStopAt="true" /> <context> <option name="JAVA_CODE" value="true" /> </context> </template> </templateSet>
结论
我希望今天的文章对您有所帮助,并有助于加速那些尚未使用其模板的用户的发展。
PS:如果愿意,您可以为IDE编写自己的插件,包括模板扩展。
欢迎进行更正或添加。
链接到官方文档:
这里谢谢,
Justboris