多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 创建和编辑动态模板 在这个页面中: * [介绍](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E4%BB%8B%E7%BB%8D) * [修改现有模板](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E4%BF%AE%E6%94%B9%E7%8E%B0%E6%9C%89%E6%A8%A1%E6%9D%BF) * [从头创建新的动态模板](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E4%BB%8E%E5%A4%B4%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF) * [从文本片段创建新的动态模板](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E4%BB%8E%E6%96%87%E6%9C%AC%E7%89%87%E6%AE%B5%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF) * [搜索动态模板列表](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E6%90%9C%E7%B4%A2%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF%E5%88%97%E8%A1%A8) * [重置为默认](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E9%87%8D%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4) ## 介绍 PhpStorm自带一套预定义[动态模板](https://www.kancloud.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8/%E5%B8%B8%E8%A7%84%E6%8C%87%E5%8D%97/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)。你可以按原样使用它们,或者根据需要修改它们。如果你想创建一个新的动态模板,在拷贝现有模板的基础上,或者从代码中的片段。 如果一个模板已经被修改,它总是可以被重置为默认设置。 ## 修改现有模板 **要修改现有模板** 1. 在设置参数对话框,打开[动态模板](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)页面。 2. 展开目标模板组,并选择要修改的模板。 3. 在[模板文本](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md#%E6%A8%A1%E6%9D%BF%E7%BC%96%E8%BE%91%E5%8C%BA%E5%9F%9F)区域,根据需要修改[模板缩写](https://www.kancloud.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8/%E5%B8%B8%E8%A7%84%E6%8C%87%E5%8D%97/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF%E7%BC%A9%E5%86%99.md) 4. 在**Template Text**字段,编辑模板主体,可能包含纯文本或这种格式`$<variable name>$`的变量. 当编辑动态模板变量时,注意以下有用的提示: * 如果你在模板文本需要(`$`)符号,可以通过重复这个字符(`$$`)来显示。 * 要改变模板中的变量,点击**Edit Variables**并按照[创建和编辑模板变量](https://www.kancloud.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8/%E5%B8%B8%E8%A7%84%E6%8C%87%E5%8D%97/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/%E5%88%9B%E5%BB%BA%E5%92%8C%E7%BC%96%E8%BE%91%E6%A8%A1%E6%9D%BF%E5%8F%98%E9%87%8F.md)章节的描述配置变量。 **Edit Variables**按钮仅在模板主体中包含至少一个用户定义变量时可用,也就是说,和`$END$`或`$SELECTION$`不同的变量。 ### 关于预定义模板变量的边注 PhpStorm支持两种预定义动态模板变量:`$END$`和`$SELECTION$`。 你不能编辑预定义动态模板变量`$END$`和`$SELECTION$`。 * `$END`表明光标的位置在展开的模板之后。例如,模板`return $END$;`将展开到: ~~~ return ; ~~~ 光标位置在分号之前。 * `$SELECTION$`用在**环绕模板**中并且用来代表要被包围的代码片段。在模板展开之后,被选中的文本将在模板中被围绕。 例如,如果你在代码中选择`EXAMPLE`并调用`"$SELECTION$"`模板(通过分配的缩写或按下`Ctrl+Alt+T`并从列表中选择目标的模板),PhpStorm将用两个引号包围选中的部分,就像下面: ~~~ "EXAMPLE" ~~~ 5. 在**Option**部分,指定模板将如何展开并被重新格式化。 6. 在**Available in**部分,指定在编辑器中可以感知模板缩写的语言和代码位置。 7. 准备好后点击**OK** ## 从头创建新的动态模板 **从头创建新的动态模板** 1. 在设置参数对话框,打开[动态模板](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)页面,并展开要创建的新模板所处的模板组。 2. 点击![新增](http://image.jellychen.cn/uploads/2016/11/new.png)。一个新的模板项目被添加到组中并将焦点移动到[模板文本](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md#%E6%A8%A1%E6%9D%BF%E7%BC%96%E8%BE%91%E5%8C%BA%E5%9F%9F)区域. 3. 指定新模板的缩写,输入模板主体,定义变量和模板组,配置选项,按照[模板修改](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E4%BF%AE%E6%94%B9%E7%8E%B0%E6%9C%89%E6%A8%A1%E6%9D%BF)规程的描述。 4. 准备好后点击**OK** ## 从文本片段创建新的动态模板 **要从文本片段创建新的动态模板** 1. 在编辑器中,选择要创建为动态模板的代码段。 2. 在主菜单,选择**Tools | Save as Live Template**。然后[动态模板](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)页面打开了,焦点在[模板文本](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md#%E6%A8%A1%E6%9D%BF%E7%BC%96%E8%BE%91%E5%8C%BA%E5%9F%9F)区域。 3. 在**Abbreviation**字段,输入识别你的新动态模板的缩写。 4. 指定新模板的缩写,输入模板主体,定义变量和模板组,配置选项,按照[模板修改](https://www.kancloud.cn/ervinhua/phpstorm/441772#%E4%BF%AE%E6%94%B9%E7%8E%B0%E6%9C%89%E6%A8%A1%E6%9D%BF)规程的描述。 5. 准备好后点击**OK** ## 搜索动态模板列表 **要搜索动态模板列表** * 在[动态模板](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)页面,输入任意字符串,这些字符串是你想要的模板中缩写,主体或描述的一部分。 PhpStorm显示所有匹配的模板: ![显示匹配的模板](http://image.jellychen.cn/uploads/2016/11/SpeedSearchInLiveTemplates.png) ## 重置为默认 **要重置模板的设置为默认** 注意,修改后的模板的显示颜色是蓝色的。 1. 在[动态模板](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)页面,右键单击一个修改后的模板来显示出上下文菜单 2. 选择这个修改后模板的上下文菜单中的**Restore defaults** # 创建和编辑模板变量 在这个页面中: * [基础](https://www.kancloud.cn/ervinhua/phpstorm/441773#%E5%9F%BA%E7%A1%80) * [在模板中配置和使用变量](https://www.kancloud.cn/ervinhua/phpstorm/441773#%E5%9C%A8%E6%A8%A1%E6%9D%BF%E4%B8%AD%E9%85%8D%E7%BD%AE%E5%92%8C%E4%BD%BF%E7%94%A8%E5%8F%98%E9%87%8F) * [在动态模板变量中使用的预定义变量](https://www.kancloud.cn/ervinhua/phpstorm/441773#%E5%9C%A8%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF%E5%8F%98%E9%87%8F%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E9%A2%84%E5%AE%9A%E4%B9%89%E5%8F%98%E9%87%8F) ## 基础 在一个[模板](https://www.kancloud.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8/%E5%B8%B8%E8%A7%84%E6%8C%87%E5%8D%97/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md)展开之后,它的变量编辑器中呈现为输入区域。这些区域的值可以被用户编辑或者被PhpStorm计算填充。 要让它自动完成,每个变量你需要指定下面: * 表达式,与变量相关的表达式来被计算 * 默认值,如果计算失败那么输入区域要被写入的默认值 PhpStorm中展开表达式之后输入区域的处理顺序,取决于列表中变量的顺序。 **在模板中配置和使用变量** 1. [打开模板设置](https://www.kancloud.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8/%E5%B8%B8%E8%A7%84%E6%8C%87%E5%8D%97/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/%E5%88%9B%E5%BB%BA%E5%92%8C%E7%BC%96%E8%BE%91%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF.md),然后在[模板文本](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/README.md#%E6%A8%A1%E6%9D%BF%E7%BC%96%E8%BE%91%E5%8C%BA%E5%9F%9F)区域点击**Edit Variables**按钮。 **Edit Variables**按钮仅在模板主体中包含至少一个用户定义变量时可用,也就是说,和`$END$`或`$SELECTION$`不同的变量。 [编辑模板变量对话框](https://www.kancloud.cn/%E5%8F%82%E8%80%83/%E8%AE%BE%E7%BD%AE%E5%8F%82%E6%95%B0%E5%AF%B9%E8%AF%9D%E6%A1%86/%E7%BC%96%E8%BE%91%E5%99%A8/%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF/%E7%BC%96%E8%BE%91%E6%A8%A1%E6%9D%BF%E5%8F%98%E9%87%8F%E5%AF%B9%E8%AF%9D%E6%A1%86.md)打开了,在这你可以定义当模板使用时变量将被如何处理。 2. 在**Name**文本框,指定要在模板主体中使用的变量名。 3. 在**Expression**下拉列表中,指定要被PhpStorm计算的表达式当模板展开后。执行以下操作之一: * 输入一个在两个引号中的字符串常量 * 输入一个预定义函数及可能的参数或者从下拉列表中选择一个 一个函数的参数可能是一个常量或者另一个预定义函数。参见页面下方的[预定义函数列表](https://www.kancloud.cn/ervinhua/phpstorm/441773#%E5%9C%A8%E5%8A%A8%E6%80%81%E6%A8%A1%E6%9D%BF%E5%8F%98%E9%87%8F%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E9%A2%84%E5%AE%9A%E4%B9%89%E5%8F%98%E9%87%8F)。 4. 要启用PhpStorm来处理下一个输入区域,如果一个输入区域关联的当前变量已经定义,选择**Skip if defined**复选框 5. 要安排PhpStorm切换变量相应的输入框的顺序,使用**Move Up**或**Move Down**按钮。 ## 在动态模板变量中使用的预定义变量 | **Item** | **Description** | | --- | --- | | `camelCase(String)` | 返回作为参数传递的字符串,转换为驼峰式写法。例如`my-text-file`/`my text file`/`my_text_file`将被转换为`myTextFile` | | `capitalize(String)` | 将作为参数传递的名字的首字母大写 | | `capitalizeAndUnderscore(sCamelCaseName)` | 将作为参数传来的驼峰式名字转为首字母大写,并在单词重建插入下划线。例如,如果传来的参数是`FooBar`,那么函数返回`FOO_BAR`。 | | `classNameComplete()` | 这个表达式用来在变量位置替换[类名称](https://www.kancloud.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8/%E5%B8%B8%E8%A7%84%E6%8C%87%E5%8D%97/%E4%BB%A3%E7%A0%81%E8%A1%A5%E5%85%A8/README.md) | | `clipboard()` | 返回系统剪贴板的内容 | | `snakeCase(String)` | 从蛇形字符串返回驼峰式写法的字符串。例如,如果传来的参数字符串是`foo_bar`,函数将返回`fooBar`。 | | `complete()` | 这个表达式在变量位置代替行使代码补全 | | `completeSmart()` | 这个表达式在变量位置代替行使只能类型补全 | | `date(sDate)` | 用指定格式返回当前系统日期。 默认的,当前日期被返回为系统默认格式。然而,如果你用两个引号指定日期格式,日期将被呈现为指定格式: ![指定日期格式](http://image.jellychen.cn/uploads/2016/11/date_format.png) | | `decapitalize(sName)` | 用相应的小写字母替换作为参数传递的名字的首字母。 | | `enum(sCompletionString1,sCompletionString2,...)` | 用逗号分隔的字符串建议作为模板调用时的完成列表 | | `escapeString(sEscapeString)` | 避开指定的字符串 | | `expectedType()` | 返回整个模板期望的类型。这是有道理的,如果模板在正确的位置展开,在返回之后,等等 | | `fileName(sFileName)` | 返回带扩展名的文件名 | | `fileNameWithoutExtension()` | 返回文件名不要扩展名 | | `firstWord(sFirstWord)` | 返回作为参数传递的字符串的第一个单词 | | `lineNumber()` | 返回当前行号 | | `lowercaseAndDash(String)` | 返回作为参数传递的字符串以用破折号分隔的小写形式。例如,字符串`MyExampleName`转换为`my-example-name` | | `snakeCase(sCamelCaseText)` | 从驼峰式写法的字符串返回蛇形字符串 | | `spaceSeparated(String)` | 传递来的驼峰式字符串转换为空格分隔的单词。例如,如果川里来的字符串参数是`fooBar`,那么返回值就是`foo bar` | | `time(sSystemTime)` | 放回当前系统时间。 | | `timestamp()` | 这个参数没有参数,返回的是1970-1-1到现在的毫秒时间。参考文章[Ubix time](https://en.wikipedia.org/wiki/Unix_time) | | `underscoresToCamelCase(sCamelCaseText)` | 从下环线分隔的字符串转换为驼峰式写法,例如,如果传来的参数是`foo_bar`,那么函数返回值就是`fooBar` | | `underscoresToSpaces(sParameterWithSpaces)` | 从下环线分隔的字符串转换为空格分隔式写法 | | `user()` | 返回当前用户名称 | | `JsArrayVariable` | 返回当前JavaScript数组名称 | | `jsClassName()` | 返回JavaScript类名称 | | `jsComponentType` | 返回当前JavaScript组件类型 | | `jsMethodName()` | 返回当前JavaScript方法名称 | | `jsQualifiedClassName` | 返回当前JavaScript类的完整名称 | | `jsSuggestIndexName` | 返回索引的建议名称 | | `jsSuggestVariableName` | 返回变量的建议名称 | 3.