动态模板变量
当您展开动态模板的缩写时,其中的变量要么显示为用于输入值的输入字段,要么被值替换。 这些值可能是您可以修改的默认值,也可能是使用 函数 计算得出的值。
要在模板中声明变量,请使用以下格式: $VAR$。
在表达式中,请使用不带开头和结尾美元符号 $ 的变量名,例如, lowercaseAndDash(ComponentName)。
使用表达式定义每个变量,并在表达式无法求值时提供默认值。
该表达式可以包含以下结构:
双引号中的字符串常量
动态模板中定义的其他变量的名称
预定义函数 ,可带参数
配置模板变量
预定义模板变量
PyCharm 支持以下不可修改的预定义动态模板变量:
当代码片段完成时,
$END$指示插入符号的位置,此时您不能再按 Tab 跳转到下一个变量。在包围模板中使用
$SELECTION$,表示要包裹的代码片段。 模板展开后,它会按照模板中的指定方式包裹所选文本。 例如,如果您在代码中选择EXAMPLE,并通过指定的缩写调用"$SELECTION$"模板,或按下 Ctrl+Alt+T 并从列表中选择所需模板,PyCharm 会将所选内容用双引号包裹,如下所示:"EXAMPLE"。
动态模板变量中使用的函数
可以使用以下函数来定义动态模板变量:
函数 | 描述 |
|---|---|
| 返回在当前语言上下文中表示块注释结尾的字符。 |
| 返回在当前语言上下文中表示块注释开始的字符。 |
| 将字符串转换为 camelCase。 例如, |
| 将字符串的首字母大写。 例如, |
| 将字符串的所有字母大写,并在各部分之间插入下划线。 例如, |
| 返回系统剪贴板的内容。 |
| 移除 |
| 返回在当前语言上下文中表示注释结束的字符。 对于具有行注释的语言,返回值为空。 |
| 返回在当前语言上下文中表示注释开始的字符。 对于具有行注释的语言,返回值是行注释的起始符,与 lineCommentStart() 相同。 |
| 在变量位置调用 代码补全。 |
| 在变量位置调用 智能类型补全。 |
| 返回作为参数传递给该函数的所有字符串的连接结果。 例如, |
| 返回当前系统日期。 默认情况下,在不提供参数时,返回当前系统格式的日期。 如需使用其他格式,请根据 SimpleDateFormat 规范提供一个参数。 例如, |
| 返回表或视图的列列表。 |
| 返回表或视图的名称。 |
| 将字符串的首字母替换为相应的小写字母。 例如, |
| 如果在 return 语句中使用该表达式,则返回默认值。 如果表达式的类型为错误类型,则使用 |
| 显示可用 Django 块的补全弹窗。 |
| 显示可用 Django 过滤器的补全弹窗。 |
| 显示可用 Django 模板标签的补全弹窗。 |
| 显示可用 Django 变量的补全弹窗。 |
| 在模板展开时,返回用于补全的字符串列表。 例如, |
| 转义特殊字符,以便结果可用于 Java 字符串。 例如,它会将制表符替换为 |
| 返回模板展开位置的表达式的预期类型(在赋值的右侧、 仅在 Java 上下文中可用。 |
| 返回当前文件的名称(包含扩展名)。 |
| 返回当前文件的名称(不包含扩展名)。 |
| 返回当前文件的绝对路径。 |
| 返回当前文件相对于当前项目的路径。 要检查给定文件的相对路径,右键点击它并选择 复制引用 ,或按下 Ctrl+Alt+Shift+C。 |
| 返回作为参数传入的字符串的第一个单词。 例如, |
| 执行以字符串形式传入的 Groovy 脚本。 第一个参数是一个字符串,其内容可以是脚本文本,也可以是包含该脚本的文件路径。 该函数将其他可选参数作为 以下示例展示了一个
groovyScript("_1.toUpperCase()", MyVar)
以下示例展示了一个
groovyScript("def result = ''; _1.split().eachWithIndex { item, index -> result = result + index.next() + '. ' + item + System.lineSeparator() }; return result;", SELECTION)
最后一个示例使用了 |
| 返回当前 JavaScript 数组的名称。 |
| 返回当前 JavaScript 类的名称。 |
| 返回当前 JavaScript 组件的类型。 |
| 根据模块名称,从 |
| 返回当前 JavaScript 方法的名称。 |
| 返回当前 JavaScript 类的完整名称。 |
| 布尔参数用于确定在当前上下文中是否允许常量。 如果未指定参数,则允许常量。 当模板展开时,对于 TypeScript 和 ES6,会显示包含 |
| 根据文件名,为 |
| 从最常用的名称中返回索引变量的建议名称: |
| 根据您的代码样式设置中关于变量命名规则的配置,基于变量类型和初始化表达式返回变量的建议名称。 例如,如果这是一个在迭代中保存元素的变量,PyCharm 会结合被迭代容器的名称,推断出最合适的名称。 |
| 返回在当前语言上下文中表示行注释起始的字符。 |
| 返回当前行号。 |
| 将字符串转换为小写,并插入短横线作为分隔符。 例如, |
| 返回当前 Python 类的名称(模板展开所在的类)。 |
| 返回当前 Python 函数的名称。 |
| 为可迭代变量启用特定作用域的补全。 ![]() |
| 在 例如, |
| 在向函数或方法添加参数时,返回参数详细信息。 使用示例: ![]() |
| 将字符串转换为 snake_case。 例如, |
| 返回指定的字符串,使用空格作为分隔符。 例如, |
| 将作为参数传入的字符串中的空格替换为下划线。 例如, |
| 返回直到指定分隔符之前的子字符串。 这对于移除测试文件名中的扩展名很有用。 例如,如果在名为 component-test.js 的文件中使用, |
| 返回当前系统时间。 默认情况下,在不提供参数时,返回当前系统格式的时间。 如需使用其他格式,请根据 SimpleDateFormat 规范提供一个参数。 例如, |
| 返回作为参数传入的变量的类型。 仅在 Java 上下文中可用。 |
| 将带下划线的字符串(如 snake_case )转换为 camelCase。 例如, |
| 将字符串中的下划线转换为空格。 例如, |
| 返回当前用户的名称。 |
示例
让我们使用变量和 函数 制作一个简单的动态模板。 它将创建一个带有预定义类变量和方法的 Python 类。 模板将包含三个变量:
$ClassName$:新类的名称$Food$:三个可能值的列表:"肉"、"草" 和 "蜂蜜"$AnimalName$:以小写字母开头的类名,以便可在句子中使用
创建包含变量的模板
按 Ctrl+Alt+S 打开设置,然后选择 。
选择 Python 组,点击
,并选择 实时模板。
在 缩写 字段,指定将用于展开模板的字符。 例如,
animal。在 模板文本 字段,粘贴以下模板:
class $ClassName$(Animal): food = "$Food$" def animal_food(self): print(f"The $AnimalName$ eats {self.food}.")
如果有 无适用上下文 警告,点击 定义 并选择您希望此动态模板可用的上下文。 例如, Python:

点击 编辑变量(E)… ,并在 编辑模板变量 对话框中配置变量:
$ClassName$保持不变,这意味着我们希望用户在应用此模板时输入一个值。$Food$:在 表达式 字段,输入enum("meat","grass","honey")。 此函数允许用户在应用此模板时选择预定义值之一。$AnimalName$:在 表达式 字段,输入decapitalize(ClassName)。 此函数获取ClassName变量的值,并将其首字母转换为小写。 选择 如果定义则跳过 ,因为我们不需要提示用户输入。

使用动态模板
开始键入动态模板的名称(在我们的示例中为
animal)。键入该变量的值(在我们的示例中为类名),然后按 Tab 跳转到下一个变量。
使用键盘箭头,为
food字符串选择其中一个值。


