在上一篇文章中,我介绍了Live Templates的基础知识,但是我认为覆盖这些细节并指出该功能的一些鲜为人知的方面会很酷。
首先, Ctrl + J是默认情况下用于获取可用列表的快捷方式 。 但是,如果您有时间练习,很可能会记住这些缩写,例如psvm , iter , psfs , soutv等。
在使用实时模板之前,我确定要做的一件事是,我将默认的扩展键(默认情况下为Tab )更改为空格键。 在我看来,将Space用于此目的更为自然,因为当您键入内容时,实际上几乎自动按下了Space键。
Live Templates的另一个很酷的功能是在功能强大的语句周围加上一段代码- 在上一篇文章中也进行了介绍 。
如何定义自己的模板?
IntelliJ在其默认发行版中提供了许多模板,但是显然,它并未涵盖您可能需要的所有情况。 因此,这是本文的主要目的-如何在IntelliJ中定义自定义实时模板。 首先,让我们组成一个用例-一种情况,我们希望有一些输入速度更快的方法,但是默认情况下在IDE中未定义。
由于某些原因,IntelliJ默认情况下不提供try-catch模板。 仅当您希望将现有语句包含在try-catch块中时,才建议使用此选项,但当您只想创建一个空语句时,则不建议使用此选项。 我们可以做的是:打开“设置”窗口( Ctrl + Alt + S ),然后开始键入“实时模板”,这将引导您进入模板的设置,然后单击右侧的“添加..”按钮。
创建简单的模板非常简单,只需为给定的关键字生成已定义的文本即可。 对于空的try-catch块,我们只需要填写缩写和代码本身,而不要忘记使用相应的复选框将其绑定到Java上下文。
这是一个很愚蠢的模板,这里没有什么聪明的。 但是,如果我们想在catch块中建议异常类型怎么办? 应用模板后,如果我们要将光标定位在某个特定的位置怎么办? 让我们使全新模板更加智能。
要询问IntelliJ在catch块中的可抛出类型,我们可以添加变量( $ EXCEPTION $ )并使用IntelliJ提供的特殊功能定义其值。 说,我希望类型是java.lang.Exception类的子类型,因此我正在使用subtype( <type> )函数:
您可能已经注意到,我使用了另一个变量$ END $ ,但是对话框窗口中没有定义任何值。 这是一个预定义的变量,表示在模板内最后一次选择之后,光标应位于何处。
因此,现在我键入“ try”并按空格键后,模板将扩展为以下内容:
首先,将光标定位在catch块内,以选择要处理的异常的类型。 当我确定类型并按下Enter键后,光标将立即定位到try块中。
我们可以走得更远,并通过再次使用特殊功能模拟Ctrl + Space行为,添加一个选项来选择对异常实例的方法调用。 这是一个虚构的示例,但让我们假设我们想要:)
为此,我定义了一个$ METHOD $变量,该变量在模板编辑器中分配了complete()函数:
现在,一旦选择了异常类型,接下来要做的就是在catch块中对异常实例执行自动自动完成操作–将会弹出可用方法列表:
实际上,可以在实时模板中使用大量函数来进行变量分配。 令人高兴的是,这些代码不仅适用于Java,而且适用于其他语言,例如在编写JavaScript,HTML或Groovy代码时。
环绕模板
IntelliJ中可用的另一种实时模板是周围的模板。 这意味着您可以选择一个文本块(或仅将光标定位到所需的位置),然后按Ctrl + Alt + T快捷键-将会弹出一个带有模板列表的弹出窗口。
定义自定义环绕声模板与普通模板没有什么不同,除了将选定的代码块(或文本)分配给预定义的$ SELECTION $变量。 同样,如果模板包含此变量,则它将不会出现在通过Ctrl + J提供的常规模板列表中。
让我们举一个定义custon周围模板的示例。 假设我们要引用选定的文本。 这是一个非常简单的模板–只需在模板编辑器中的$ SELECTION $变量周围添加引号即可:
现在,如果我选择文本并按Ctrl + Alt + T快捷键,然后按“ Q”键,则所选文本将被加引号:
恢复
如果您使用IntelliJ,则Live Templates应该是您的主要工作,以更快地绑定代码。 IntelliJ中定义了很多标准模板,但不仅限于标准模板列表-根据您的代码细节定义自己的模板-您不会后悔的!
参考: IntelliJIDEA的优点是什么。 第II部分:来自Code Impossible博客的JCG合作伙伴 Anton Arhipov的 实时模板 。
翻译自: https://www.javacodegeeks.com/2011/11/whats-cool-in-intellijidea-part-ii-live.html