RubyMine 2025.2 Help

实时模板

要展开代码片段,请输入相应的模板缩写并按 Tab。 继续按 Tab 以从模板中的一个变量跳到下一个变量。 按 Shift+Tab 移动到上一个变量。

实时模板 (或 代码片段 )允许您将常用的结构插入到代码中。 这些可以是条件、块、循环等。 例如,下面的动画展示了如何通过使用预定义的 ife 缩写快速插入 if-else 块。

使用模板插入 if-else 块

RubyMine 提供了许多针对各种语言和框架的预定义模板,包括 Ruby、Rails、RSpec、JavaScript 等。 如果需要,您可以自定义预定义模板或添加新模板。

实时模板有三种类型:

  • 简单模板 仅包含预定义代码。 当您 展开 一个简单模板时,文本会自动插入到您的源代码中,替换缩写。

  • 参数化模板 包含允许用户输入的变量。 当您 展开 一个参数化模板时,您可以手动替换变量或提供一个 表达式 来自动计算它们。

  • Surround templates 用用户指定的文本包装所选代码块。

展开 实时模板

展开简单模板和参数化模板

要展开一个实时模板,请输入相应的模板缩写并按 Tab。 让我们看看如何使用预定义的 ife 模板插入 if-else 块。

使用模板插入 if-else 块
  1. 在编辑器中,输入 ife 并按 Tab

  2. 指定所需的条件,然后按 Tab 以移动到下一个语句。

  3. 输入在条件为 true 时执行的代码,并按 Tab 移动到 else 子句。

  4. 输入在条件为 false 时执行的代码,并再次按 Tab 完成。

  5. (可选)在完成之前,您可以按 Shift+Tab 移动到上一个子句并进行更改。

展开环绕模板

环绕模板可用于用标签包裹一段 HTML 代码。 执行以下步骤来完成此操作:

展开环绕模板
  1. 选择所需的代码片段并按 Ctrl+Alt+J

  2. 在弹出的窗口中,选择 环绕 模板并按 Enter

  3. 输入所需的标签并按 Enter

创建一个简单模板

让我们添加一个不包含任何模板变量的简单模板。 例如,我们在编辑器中打开了以下 TODO 注释:

# TODO # Description: Please enter a description # Author: jetbrains # Date: 01/01/2020

要将此代码保存为模板,请执行以下操作:

从代码片段创建一个简单模板

  1. 在编辑器中选择代码。

  2. 转到 代码 | 另存为实时模板

  3. 在弹出的对话框中,指定以下设置。

    保存为实时模板
    • 缩写 :指定用于在编辑器中展开模板的模板缩写。 这里我们使用 todo

    • 描述 :包含将在完成弹出窗口中显示的模板描述。

    • 模板文本 :包含要插入代码的模板正文。

    • 适用于 :指定可以展开创建的代码片段的语言或代码片段。 单击 更改 以指定所需的上下文。

    点击 确定

  4. 要尝试创建的模板,请在编辑器中输入 todo 并按 Tab

    展开简单模板

添加模板变量

实时模板允许您添加可用于不同目的的变量,例如:

  • 提供提示,说明您需要在当前光标位置指定什么

  • 提供要插入的静态默认值

  • 提供一个表达式来计算要插入的值

让我们修改在 上一章 创建的简单实时模板,并添加提示以使输入更方便。

为模板变量添加默认值

  1. 打开 设置 并转到 编辑器 | 实时模板 页面。

  2. 选择在 上一章 中创建的 todo 模板。

  3. 模板文本 中添加 $DESCRIPTION$$AUTHOR$$DATE$ 变量,如下所示。

    带有变量的实时模板
    # TODO # Description: $DESCRIPTION$ # Author: $AUTHOR$ # Date: $DATE$
  4. 请点击 编辑变量 按钮。 在弹出的 编辑模板变量 对话框中,在 默认值 列中提供用引号括起来的默认值。

    编辑模板变量对话框

    单击此对话框中的 确定 ,然后单击 设置 中的 确定

  5. 要尝试自定义模板,请在编辑器中输入 todo 并按 Tab。 使用 Tab 在变量之间跳转。

    展开带有变量的模板

    如有必要,按 Shift+Tab 移动到上一个变量。

使用表达式计算变量

RubyMine 允许您使用表达式计算实时模板变量并自动插入计算值。 让我们修改在 上一过程 中创建的自定义 todo 模板。

  1. 编辑器 | 实时模板 页面中,选择 todo 模板并单击 编辑变量 按钮。

  2. 在弹出的 编辑模板变量 对话框中,指定设置,如下所示。

    编辑模板变量对话框
    • DESCRIPTION :保留在 上一过程 中指定的静态 默认值

    • AUTHOR :在 AUTHOR 旁展开 表达式 并从列表中选择 user 函数。 此函数返回当前用户的名称。

    • DATE :在 DATE 旁展开 表达式 并从列表中选择 date。 此函数以指定格式返回当前系统日期。

    • 对于 AUTHORDATE 变量,启用 如果已定义则跳过 选项。 在这种情况下,RubyMine 不会建议您在展开模板时指定这些变量。

    单击此对话框中的 确定 ,然后单击 设置 中的 确定

  3. 在编辑器中输入 todo ,并按 Tab 展开模板。

    展开带有变量的模板

    如您所见,RubyMine 使用 userdate 函数自动填充 作者日期 的值。 因此,您只需提供描述即可。

预定义模板变量

RubyMine 支持以下无法修改的预定义 实时模板 变量:

  • $END$ 表示代码片段完成时的光标位置,您无法再按 Tab 跳转到下一个变量。

  • $SELECTION$ 用于环绕模板,表示要包装的代码片段。 了解更多信息,请访问 环绕模板

环绕模板

环绕模板 使用预定义代码包裹代码块。 $SELECTION$ 预定义变量 用于表示要包裹的代码片段。 让我们看看如何创建类似于预定义 ife 模板的自定义环绕模板。

创建一个环绕模板

  1. 打开 设置 并转到 编辑器 | 实时模板 页面。

  2. 选择 Ruby 组并单击 Add 按钮。

  3. 指定设置,如下所示。

    环绕模板设置
    • 缩写 :指定模板缩写(在本例中为 ife_sur)。

    • 描述 :包含将在 选择模板 弹出窗口中显示的模板描述。

    • 模板文本 :以以下方式指定模板正文:

      if $SELECTION$ $STATEMENT_ONE$ else $STATEMENT_TWO$ end $END$

      请注意,此代码片段包含 $SELECTION$ 变量,在展开模板时将被选定代码替换。

    • 定义 :在此对话框中单击 确定 ,然后单击 设置 中的 确定

  4. 要展开创建的环绕模板,请在编辑器中选择所需的代码片段并按 Ctrl+Alt+J。 选择所需的环绕模板并按 Enter

    展开环绕模板

    选定的代码将作为条件插入。 使用 Tab 在变量之间跳转。 完成后,光标将放置在生成的代码片段下一行,因为 $END$ 变量位于 模板文本 中。

共享 实时模板

RubyMine 存储自定义实时模板组的定义,以及在自动生成的 XML 配置文件中添加到预定义模板组的模板。

  • 对于自定义组,文件包含该组包含的所有模板的定义。

  • 对于一个修改过的预定义组,文件仅包含添加(或修改)的 实时模板 的定义。

live template 组的配置文件存储在 templates 目录中的 IDE 配置目录。 通过复制 templates 目录中的相关文件,您可以在团队成员和多个 RubyMine 安装之间共享 实时模板。 此外,您可以在所有基于 IntelliJ 平台的 IDE 之间共享实时模板。

导出实时模板配置

  1. 请选择 文件 | 管理 IDE 设置 | 导出设置

  2. 导出设置 对话框中,请确保选中 实时模板 复选框,并指定导出设置将保存的归档路径和名称。

  3. 单击 确定 以根据实时模板配置文件生成文件。 您可以与团队成员共享此文件,或在另一个 RubyMine 安装上导入该文件。

导入实时模板配置

  1. 请选择 文件 | 管理 IDE 设置 | 导入设置

  2. 指定导出实时模板配置的存档路径。

  3. 导入设置 对话框中,选中 实时模板 复选框并点击 确定

  4. 重新启动 RubyMine 后,您将在 编辑器 | 实时模板 设置页面  Ctrl+Alt+S 上看到导入的实时模板。

实时模板设置

要配置实时模板,请打开 设置Ctrl+Alt+S ),转到 编辑器 | 实时模板 页面。 在此页面上,您可以看到按语言或框架分组的所有可用实时模板。 要配置模板,请展开所需的组(例如 Ruby )并选择一个模板。

主设置

主设置

项目

描述

默认展开方式

指定所有模板的默认调用键。 特定模板的单个扩展键在编辑区域中定义。

如果不希望使用标准扩展键(TabEnterSpace ),请从此列表中选择 自定义 选项。

当选择 自定义 时, 更改 链接会出现在下拉菜单旁边,引导您进入 键位图 页面。

实时模板

显示所有当前可用的模板缩写及其描述。 缩写按节点分组并在每个组内按字母顺序排序。 要激活模板或整个组,请选中模板或组旁边的复选框。

"添加"图标

添加 Alt+Insert

向当前模板组添加新模板项。 您可以在编辑区域中定义模板缩写、描述、文本、变量、展开键和上下文。

移除图标

移除 Delete

从列表中移除所选的 实时模板。

重复图标

复制

点击此按钮以根据选定的模板创建一个新模板。 已将一个新的模板项添加到当前节点,模板文本区域中的字段显示所选模板的定义。

恢复已删除的默认设置图标

还原已删除的默认模板

点击此按钮以恢复已删除的动态模板。 此按钮仅在更改应用时启用。

实时模板的上下文菜单

实时模板的上下文菜单

项目

描述

移动

将所选模板移动到指定组。

更改上下文

更改当前模板启用的上下文或上下文。 当您选择此命令时,将显示支持的语言上下文列表。 要使 RubyMine 认为模板是上下文相关的,请在上下文名称旁边选择一个复选框。

可用的上下文类型取决于启用的插件。

复制

在系统剪贴板中创建一个 序列化模板 XML

粘贴

已复制模板 的 XML 表示粘贴到选定的模板组。

恢复默认值

此命令仅出现在标记为蓝色的已修改模板的上下文菜单中。 选择此命令以恢复默认模板设置。

模板编辑区域

模板编辑区域

在以下情况下,焦点将移至此区域:

  • 当您点击 Add "添加"图标复制 复制图标 按钮时。

  • 当您在列表中选择一个 实时模板。

  • 当您在编辑器中选择代码片段并选择 代码 | 另存为实时模板

您可以使用此区域的控件来创建新的 实时模板并编辑现有模板的设置。

您可以使用标记在字段标签上的快捷键在模板文本区中导航。

项目

描述

缩写

在此字段中,指定模板缩写。 例如,在编辑器中标识模板的字符序列。

描述

在该字段中,提供模板的可选描述或其用法示例。

模板文本

在此字段中,输入模板主体,它可能包含纯文本和格式为 $<variable name>$ 的变量。 如果必要,请点击 编辑变量 并根据需要 配置变量。 要在模板文本中转义美元符号 $ ,只需将其重复 $$

适用于

该只读字段显示了编辑器应对模板敏感的语言和代码片段。 在此情境下按下 Ctrl+J ,RubyMine 将显示适合此情境的模板列表。

更改

点击此链接以修改当前模板启用的上下文集合。 点击链接后,将显示支持的语言上下文列表。 要使 RubyMine 认为模板是上下文相关的,请在上下文名称旁边选择一个复选框。

可用的上下文类型取决于启用的插件。

编辑变量

打开 编辑模板变量对话框,您可以在其中定义 RubyMine 在模板展开时应如何处理模板变量。

选项

在此区域中定义模板扩展时编辑器的行为。

  • 展开方式(X) - 从此列表中选择密钥以调用模板。

  • 按照样式重新设置格式(R) :选中此复选框以使 RubyMine 根据 代码风格页面中定义的当前样式设置自动重新格式化展开的文本。

变量中使用的预定义函数

函数列表

函数

描述

blockCommentEnd()

返回指示当前语言上下文中块注释结束的字符。

blockCommentStart()

返回指示当前语言环境下块注释开始的字符。

camelCase(<String>)

将字符串转换为 camelCase

例如, camelCase("my-text-file")camelCase("my text file")camelCase("my_text_file") 都返回 myTextFile

capitalize(<String>)

将字符串的首字母大写。

例如, capitalize("name") 返回 名称。 或者您可以将其合并到 capitalize(camelCase("my awesome class")) 以获取 MyAwesomeClass

capitalizeAndUnderscore(<String>)

将字符串的所有字母大写,并在各部分之间插入下划线。

例如, capitalizeAndUnderscore("FooBar")capitalizeAndUnderscore("foo bar")capitalizeAndUnderscore("foo-bar") 都返回 FOO_BAR

clipboard()

返回系统剪贴板的内容。

commentEnd()

返回当前语言环境中表示注释结束的字符。 对于带有行注释的语言,返回值为空。

commentStart()

返回当前语言上下文中表示注释开始的字符。 对于带有行注释的语言,返回值是行注释的起始,与 lineCommentStart() 相同。

complete()

在变量的位置调用 代码补全

concat(<String>, ...)

返回所有作为参数传递给函数的字符串的拼接结果。

例如, concat(date()," ",user()) 返回当前系统日期和用户名,中间用空格分隔。

date([format])

返回当前系统日期。

默认情况下,没有参数时,它会以当前系统格式返回日期。 要使用不同的格式,请根据 SimpleDateFormat规范提供参数。 例如, date("Y-MM-d, E, H:m") 返回的日期格式为 2020-02-27, Thu, 16:11

dbColumns()

返回表或视图的列列表。 上下文代码模板中使用了 dbColumns() (例如, ins)。 您可以通过右键点击对象并选择 SQL 脚本 来访问上下文实时模板。

dbObjectName()

返回表或视图的名称。 上下文代码模板中使用了 dbObjectName() (例如, top)。 您可以通过右键点击对象并选择 SQL 脚本 来访问上下文实时模板。

decapitalize(<String>)

将字符串的首字母替换为相应的小写字母。

例如, decapitalize("Name") 返回 name

defaultReturnValues

如果表达式用于返回语句,则返回默认值。 如果表达式是错误类型,则使用 errorVariableName 参数。

enum(<String>, ...)

返回模板扩展时建议的字符串列表。

例如, enum("Foo","Bar","Baz") 显示了一个列表,您可以从中选择一个指定的字符串。

escapeString(<String>)

将特殊字符转义,以便结果可以在 Java 字符串中使用。

例如,它将制表符替换为 \t ,将换行符替换为 \n ,将反斜杠转义为 \\ ,引号替换为 \" ,等等。

expectedType()

返回模板展开时表达式的预期类型(在赋值的右侧部分、 return 之后、作为方法参数等等)。

仅在 Java 环境中可用。

fileName()

返回当前文件的名称及其扩展名。

fileNameWithoutExtension()

返回当前文件的名称,但不包含其扩展名。

filePath()

返回当前文件的绝对路径。

fileRelativePath()

返回相对于当前项目的当前文件路径。 要检查某个给定文件的相对路径,右键点击并选择 复制引用 ,或按 Ctrl+Alt+Shift+C

firstWord(<String>)

返回作为参数传递的字符串的第一个单词。

例如, firstWord("one two three") 返回 one

groovyScript(<String>, [arg, ...])

执行传递为字符串的 Groovy 脚本。

第一个参数是一个字符串,其中包含脚本的文本或包含脚本的文件路径。 函数将其他可选参数作为 _1_2_3、……、 _n 变量的值传递给脚本。 此外,您可以使用 _editor 变量从脚本内部访问当前编辑器。

以下示例显示了一个 groovyScript() 函数,用于将给定字符串(另一个变量 $MyVar$ 的值)转换为大写字母:

groovyScript("_1.toUpperCase()", MyVar)

以下示例显示了一个 groovyScript() 函数,该函数将选定的文本拆分为单词,并将它们显示为编号列表:

groovyScript("def result = ''; _1.split().eachWithIndex { item, index -> result = result + index.next() + '. ' + item + System.lineSeparator() }; return result;", SELECTION)

最后一个示例使用 SELECTION 预定义变量,这意味着您必须选择文本并按 Ctrl+Alt+T环绕 )来应用它。

lineCommentStart()

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

lineNumber()

返回当前行号。

lowercaseAndDash(<String>)

将字符串转换为小写并插入短横线作为分隔符。 例如, lowercaseAndDash("MyExampleName")lowercaseAndDash("my example name") 都返回 my-example-name

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

找到所有在 Pattern 中的 String 并用 Replacement 替换它们。 您可以将模式指定为正则表达式,以在字符串中查找所有匹配项。

例如, regularExpression(NAME, "a", "b") 表达式将模板变量 $NAME$ 中的任何字母 “a” 替换为字母 “b”。 您可以在模式部分使用 regexp 字符类;例如, regularExpression(NAME, "[a-z]", "b") 将替换变量中的任何字母。 如果您希望模式(例如 \d\w )被视为正则表达式字符类,您必须对斜杠进行转义,以便您的模式看起来像 "\\d"

showParameterInfo()

返回在向函数或方法添加参数时的参数详细信息。

snakeCase(<String>)

将字符串转换为 snake_case。 例如, snakeCase("fooBar")snakeCase("foo bar") 都返回 foo_bar

spaceSeparated(<String>)

返回指定的字符串,并以空格作为分隔符。 例如, spaceSeparated("fooBar") 返回 foo Bar ,而 spaceSeparated("Foo_BAR") 返回 Foo BAR

spacesToUnderscores(<String>)

将传入参数中的空格替换为下划线。 例如, spacesToUnderscores("foo bar BAZ") 返回 foo_bar_BAZ

substringBefore(<String>, <Delimeter>)

返回指定分隔符之前的子字符串。 这对于移除测试文件名中的扩展名很有帮助。 例如, substringBefore(fileName(),".") 如果在一个名为 component-test.js 的文件中使用,将返回 component-test

time([format])

返回当前系统时间。

默认情况下,无参数时,它会返回当前系统格式的时间。 要使用不同的格式,请根据 SimpleDateFormat规范提供参数。 例如, time("H:m z") 返回的时间格式为 13:10 UTC

underscoresToCamelCase(<String>)

将带有下划线的字符串(如 snake_case )转换为 camelCase。 例如, underscoresToCamelCase(foo_bar_baz)underscoresToCamelCase(FOO_BaR_baZ) 都返回 fooBarBaz

underscoresToSpaces(<String>)

将字符串中的下划线转换为空格。 例如, underscoresToSpaces(foo_bar_baz) 返回 foo bar baz ,而 underscoresToSpaces(FOO_BaR_baZ) 返回 FOO BaR baZ

user()

返回当前用户的名称。

最后修改日期: 2025年 9月 26日