CLion教程-活动模板变量
在展开活动模板缩写时,其变量要么显示为输入字段,您可以在其中键入值,要么被替换为值。这些可以是您可以修改的默认值,也可以是使用函数计算出的值。
要在模板中声明变量,请使用以下格式:$VAR$
。
在表达式中,使用变量名称时不要包含开头和结尾的美元符号 $
,例如,lowercaseAndDash(ComponentName)
。
要将美元符号
$
添加到模板文本中,以便它不被视为变量声明,请使用特殊变量$$
。
使用表达式定义每个变量,并为在表达式无法计算时提供默认值。
此表达式可以包含以下构造:
- 双引号中的字符串常量
- 在活动模板中定义的其他变量的名称
- 可能带有参数的预定义函数
配置模板变量
- 打开设置对话框(CtrlAltS),转到 Editor | Live Templates。
- 选择要配置变量的模板。
- 在模板文本中指定变量,然后点击 "Edit Variables..."。
在Edit Template Variables对话框中,您可以为每个变量执行以下操作:
- 更改变量名称
- 使用预定义函数定义表达式
- 为表达式无法计算时指定默认值
- 指定在成功计算表达式时是否要跳过提示用户输入的变量
预定义模板变量
CLion 支持以下无法修改的预定义活动模板变量:
$END$
表示代码片段完成时光标的位置,您不能再按 Tab 键跳转到下一个变量。$SELECTION$
用于包围模板,表示要包装的代码片段。模板展开后,它会根据模板中指定的方式包装所选文本。例如,如果您在代码中选择EXAMPLE
并通过分配的缩写或按 Ctrl+Alt+0+T 并从列表中选择所需的模板来调用"$SELECTION$"
模板,CLion 将在双引号中包装所选内容,如下所示:"EXAMPLE"
。
用于活动模板变量的函数
以下函数可用于定义活动模板变量:
函数名 | 描述 |
---|---|
autoTypeForRangedForLoop() | 为 range-base for 循环提供类型推导的变量。 |
blockCommentEnd() | 返回当前语言上下文中块注释的结束字符。 |
blockCommentStart() | 返回当前语言上下文中块注释的开始字符。 |
camelCase(<String>) | 将字符串转换为驼峰式命名。 |
capitalize(<String>) | 将字符串的第一个字母大写。 |
capitalizeAndUnderscore(<String>) | 将字符串的所有字母大写,并在部分之间插入下划线。 |
className() | 返回当前类的名称。 |
clipboard() | 返回系统剪贴板的内容。 |
collectionElementName() | 返回集合的元素名称。 |
commentEnd() | 返回当前语言上下文中注释的结束字符。 |
commentStart() | 返回当前语言上下文中注释的开始字符。 |
complete() | 在变量位置调用代码补全。 |
completeSmart() | 在变量位置调用智能类型补全。 |
concat(<String>, ...) | 返回所有作为参数传递给函数的字符串的连接。 |
date([format]) | 返回当前系统日期。 |
decapitalize(<String>) | 将字符串的第一个字母变为小写。 |
enum(<String>, ...) | 返回模板展开时建议的完成列表中的字符串列表。 |
escapeString(<String>) | 转义特殊字符,以便在 Java 字符串中使用。 |
fileName() | 返回当前文件的名称。 |
fileNameWithoutExtension() | 返回当前文件的名称(不包括扩展名)。 |
filePath() | 返回当前文件的绝对路径。 |
fileRelativePath() | 返回当前文件相对于当前项目的路径。 |
firstWord(<String>) | 返回参数字符串的第一个单词。 |
lineCommentStart() | 返回当前语言上下文中行注释的开始字符。 |
lineNumber() | 返回当前行号。 |
lowercaseAndDash(<String>) | 将字符串转换为小写并插入破折号作为分隔符。 |
methodName() | 返回模板展开所在方法的名称。 |
objectWithFunctions(sFunctionName1, sFunctionName2,...) | 返回可见对象的列表,这些对象包含成员函数。 |
pyFunctionName() | 返回当前 Python 函数的名称。 |
regularExpression(<String>, <Pattern>, <Replacement>) | 查找字符串中所有与模式匹配的内容,并用替换内容替换它们。 |
showParameterInfo() | 在将参数添加到函数或方法时返回参数详细信息。 |
snakeCase(<String>) | 将字符串转换为蛇形命名。 |
spaceSeparated(<String>) | 返回指定的字符串,其中间用空格分隔。 |
spacesToUnderscores(<String>) | 将字符串中的空格替换为下划线。 |
substringBefore(<String>, <Delimiter>) | 返回指定分隔符之前的子字符串。 |
suggestIndexName() | 返回迭代索引变量的建议名称。 |
suggestVariableName() | 根据变量类型和其初始化表达式为变量建议名称。 |
time([format]) | 返回当前系统时间。 |
underscoresToCamelCase(<String>) | 将带有下划线的字符串转换为驼峰式命名。 |
underscoresToSpaces(<String>) | 将字符串中的下划线替换为空格。 |
user() | 返回当前用户的名称。 |
variableForIteration() | 返回循环中用作范围表达式的对象的实例。 |
variableForRangeBasedIteration() | 返回包含 begin 和 end 函数的对象的变量。 |
variableOfType(<String>) | 返回可能分配给参数类型的所有变量。 |
示例
作为示例,让我们创建一个用于简单的 C++ 类的活动模板,使用变量和函数。该模板将包含三个变量:
$ClassName$
:一个新类的名称$Food$
:三个可能的值之一:"meat"、"grass" 和 "honey"$AnimalName$
:类名以小写字母开头,以便可以在句子中使用
创建带有变量的模板
- 按下 CtrlAlt0S 打开 IDE 设置,然后选择 Editor | Live Templates。
- 选择 C/C++ 组,点击 ,然后选择 Live Template。
- 在缩写字段中,指定用于展开模板的字符。例如,
animal
。 在模板文本字段中,粘贴以下模板:
class $ClassName$: public Animal { public: string Food = "$Food$"; void printFood () { std::cout << "The $AnimalName$ eats " << Food << std::endl; } };
点击 "Edit Variables...",在 "Edit Template Variables" 对话框中配置变量:
$ClassName$
保持不变,表示我们希望用户在应用此模板时键入一个值。$Food$
:在 Expression 字段中输入enum("meat","grass","honey")
。这个函数允许在用户应用此模板时选择预定义的值之一。$AnimalName$
:在 Expression 字段中输入decapitalize(ClassName)
。这个函数将ClassName
变量的值取出,并将其第一个字母转换为小写。选择 Skip if defined,因为我们不需要提示用户输入。
- 单击左下角的链接来定义或更改模板将适用的语言上下文。
使用创建的模板
- 开始键入活动模板的名称(在我们的示例中为
animal
)。 - 输入变量的值(在我们的示例中是类名),然后按 Tab 键跳转到下一个变量。
- 使用键盘箭头选择
food
字符串的一个值。
这是示例中使用活动模板的步骤。