php live template,live-templates-introduce.md
# 实时代码模板的使用
## 实时代码模板的介绍
![实时代码模板的介绍](images/xvii-a-live-templates-introduce-1.gif)
> * 上图 Gif 演示为最好的介绍 `Live Templates`。
> * 实时代码模板需要字符串前缀,如 Gif 演示中,在输入 `sys` 后生成一段输出语句,其中 `sys` 前缀是我自己设置的。
> * 实时代码模板支持变量参数设置,如 Gif 演示中,在输入 `temp1` 的时候,后面自动也生成了一个 `temp1`,这是因为两者的变量名是一致的,所以我设置了一个变量值内容之后,相同变量值的内容也会跟着出现。
> * 实时代码模板支持最后位置的定位,如 Gif 演示中,在输入完 `temp1` 之后,按 `Enter` 后自动跳转到语句末。虽然默认没有设置的时候也是在这个位置,但是我是通过设置来定位到此位置的。
> * 实时代码模板支持获取当前类名和当前方法名(本质是内置函数),如 Gif 演示中,在输入完 `sys` 生成输出语句中自动带有当前类名和方法名。
> * 综上效果:实时代码模板只是为了让我们更加高效的写一些固定模式的代码,以提高编码效率,同时也可以增加个性化。比如 Gif 演示中,我在开发中如果需要写输出的话,我个人习惯输出语句中前缀是自己的标记:横线和域名,以区分其他人输出,方便做全文搜索。
> * 官网介绍 `Live Templates`:
![实时代码模板的介绍](images/xvii-a-live-templates-introduce-2.jpg)
> * 如上图标注所示,实时代码模板本质是用 XML 文件来保存的,所以传播自己的实时代码模板只要传播对应的文件即可。
> * IntelliJ IDEA 的实时代码模板保存在 `/templates` 目录下,其他系统目录位置如下:(因为目录名在各个系统上是一致的,建议用硬盘搜索工具搜索即可)
>
>> * Windows: \.\config\templates
>> * Linux: ~/./config/templates
>> * OS X: ~/Library/Preferences//templates
调用常规的实时代码模板主要是通过两个快捷键:`Tab` 和 `Ctrl + J`。虽然 IntelliJ IDEA 支持修改此对应的快捷键,但是默认大家都是这样使用的,所以没有特别愿意就不要去改。
该两个快捷键的使用方法:如第一张 Gif 演示图所示,在输入 `sys` 后按 `Tab` 键,即立即生成预设语句。如果按 `Ctrl + J` 则会先提示与之匹配的实时代码模板介绍,然后还需按 `Enter` 才可完成预设语句的生成。
## 自带变量参数介绍
在文章开头我们已经有提到 IntelliJ IDEA 实时代码模板是有变量参数设置的,其中 IntelliJ IDEA 自带了两个变量参数:
> * `$END$`,表示最后都编辑完后光标所处的位置
> * `$SELECTION$`,表示设置环绕实时代码模板,环绕功能下面会模板专门进行介绍。
> * 除了上面两个变量参数外,其他一律都会自定义变量。
> * 官网介绍:
>
>> * `$END$` indicates the position of the cursor after the template is expanded.
>> * `$SELECTION$` is used in surround templates and stands for the code fragment to be wrapped.
## 实时代码模板的设置
![实时代码模板的设置](images/xvii-b-live-templates-settings-1.jpg)
> * 如上图标注 1 所示,除了 IntelliJ IDEA 预设的模板之外,我们还可以创建新组和新实时代码模板,其中组是用来包含实时代码模板的。
> * 如上图标注 2 所示,`output` 是组名,告诉开发者,这组里面实时代码模板都是用来做输出的。`serr` 表示实时代码模板输出 `System.err` 的简称,所以这个不是一个完整的单词,不需要读懂,只需要记忆。
> * 如上图标注 3 所示,实时代码模板的内容,其中用到了预设的变量 `$END$`。
> * 如上图标注 4 所示,可设置该实时代码模板的试用范围,比如图上的 `serr` 这是 Java 代码,所以试用范围我们就应该只是 Java 文件上或是 JSP 这类文件上,设置在 HTML 或是 CSS 文件上就完全没有多大意义了。
> * 如上图标注 5 所示,勾选了辅助的功能:
>
>> * `Reformat according to style` 对生成的代码进行格式化。
>> * `Shorten FQ names` 表示缩写类的全称限定名。这个一般需要勾选,帮助你把模板里的全称限定名对应的类 import,然后使用的地方改成缩写。
![实时代码模板的设置](images/xvii-b-live-templates-settings-2.jpg)
> * 如上图标注 1 所示,我们可以对实时代码模板进行组的转移。
## 变量参数和函数的介绍
如文章开头演示的 Gif 实时代码模板,其实时代码模板内容为:`System.out.println("-----------YouMeek.com-----------$VAR1$值=" + $VAR1$ + "," + "当前类=$CLASS_NAME$.$METHOD_NAME$()");$END$`
> * `$VAR1$`、`$CLASS_NAME$`、`$METHOD_NAME$` 都为自己定义的变量名。设置变量名只要用两个 `$` 包住即可。
> * 每个变量在代码输出的时候都是一次光标位置,光标跳动顺序从左到右,每次跳动按 `Enter`。
![变量参数和函数的介绍](images/xvii-c-live-templates-variables-settings-1.jpg)
> * 如上图标注红圈所示,可以对编辑代码内容的变量。
> * 如上图标注 1 所示,演示中变量名 `$CLASS_NAME$`、`$METHOD_NAME$` 会自动输出当前类名和方法名是因为使用对应的函数 `className()` 和 `methodName()`。
> * 如上图标注 2 所示,如上面介绍的,每个变量都是一次光标位置,但是演示中变量名 `$CLASS_NAME$`、`$METHOD_NAME$` 没有进入,是因为勾选了 `Skip if defined`。
> * 如上图标注 3 所示,可以改变变量光标跳转时的顺序。
> * 内置函数介绍:
>
>> * 对于官网这些函数这里就不在累赘,官网有详细的介绍,如果你还看不懂,可以看 IntelliJ IDEA 已经预设各个实时代码模板,基本上常用的函数都有被引用过,你可以通过学习这些预设的实时代码模板来揣测其函数的用法。
## 环绕功能介绍
![环绕功能介绍](images/xvii-d-live-templates-surround-settings-1.gif)
> * 上图 Gif 演示为最好的介绍 `surround templates`。
> * 如上图 Gif 演示,环绕模板的前提是:选中要被环绕的内容。
> * 在设置实时代码模板的时候,如果含有预设的变量 `$SELECTION$` 则该实时代码模板是环绕模板。
> * 该功能对于前端开发者来讲是非常方便的,默认 IntelliJ IDEA 已经自带了 HTML 标签的环绕功能。
一键复制
编辑
Web IDE
原始数据
按行查看
历史
php live template,live-templates-introduce.md相关推荐
- playbook核心元素之 模板template 介绍(7)
playbook核心元素之 --> 模板template 介绍 templates:文件文件,内部嵌套有模板语言脚本(使用模板语言编写) [root@ansible ~]# ansible-do ...
- [Go] Template 使用简介
Golang 提供了两个标准库用来处理模板 text/template 和 html/template.我们使用 html/template 格式化 html 字符. 模板引擎 模板引擎很多,Pyth ...
- Web Components 系列(五)—— 关于 Templates
前言 在之前介绍创建 Custom Elements 的代码中,有一个地方是比较繁琐的:Shadow DOM 中的每个子元素都是通过 document.createElement 方法创建的.就像下面 ...
- Struts2 官方教程之Struts Tags(八)——UI Tags(Themes and Templates)
UI标签是用来生成Web界面,或者为Web界面提供某些功能支持的标签,比如:表单标签就是把各种途径获取的需要展示的数据,通过动态生成HTML的形式展示到界面上. UI标签分成如下几种: Form Ta ...
- Go语言学习笔记【18】 Go语言常见库:html/template
[声明] 非完全原创,部分内容来自于学习其他人的理论和B站视频.如果有侵权,请联系我,可以立即删除掉. 一.html/template 主要参考文档: (1)Go语言标准库之http/template ...
- (重点)jQuery模板:jQuery Templates Proposal
现有的模板解决方案 现在已经有了许多JavaScript的解决方案模板,从这方面说,标准化的模板解决方案必然是大势所趋.在本节中,我们向你简要描述四个最流行最有趣的模板.现有的模板解决方案能解决什么? ...
- SystemML大规模机器学习,优化算子融合方案的研究
SystemML大规模机器学习,优化算子融合方案的研究 摘要 许多大规模机器学习(ML)系统允许通过线性代数程序指定定制的ML算法,然后自动生成有效的执行计划.在这种情况下,优化的机会融合基本算子的熔 ...
- gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
gettext 国际化 by Anastasia 由Anastasia 如何使用Gettext在Phoenix应用程序中执行本地化 (How to perform localization in Ph ...
- How To Deploy OpenShift Container Platform 4.8 on KVM
https://computingforgeeks.com/how-to-deploy-openshift-container-platform-on-kvm/https://computingfor ...
- 开源论坛之discourse搭建
快2个月没写博客,最近一个是忙着开发docker平台,另外一个是接手了公司私有云,所以比较忙. 公司最近有个新项目,想弄个技术的问答论坛,挑选了半天,选择ruby语言的discourse,这个是完全开 ...
最新文章
- c语言队列如何表示,队列的链式表示和实现(C语言)
- 全球及中国装饰花盆行业消费规模与投资商机研究报告2022版
- java 递归生成格雷码_格雷码的递归生成
- 业界盘点|为什么推荐算法都开始结合图神经网络了?
- Google C++ Coding Style:右值引用(Rvalue Reference)
- python while循环和双重循环
- php异步传输,php 异步处理-上传文件
- html5 tab菜单切换页面,11个常用的jQuery TAB切换菜单源码及制作教程
- 在线教育用户增长闭环白皮书
- php使用curl实现get和post请求的方法,数据传输urldecode和json
- 开关造成的毛刺_LED射灯开关关了为什么还会闪
- 1 阿里云Nginx配置https实现域名访问项目
- $on与$emit实现父子跨多组件通信
- android 调出键盘表情_keyboard dialog 仿微博表情键盘输入框,keyboarddialog
- 华为荣耀4X的ROOT
- 2.1.1 理论模型
- 浅谈什么是大数据?大数据可以做什么?
- 使用 Python 生成二维码
- java 格式化数字(每三位加逗号),保留两位小数。
- 假设有四个作业,它们的提交、运行时间如下表所示。若采用高响应比优先调度算法,试问平均周转时间和平均带权周转时间为多少?
热门文章
- Motivated Word(3)
- 计算机机房配置发电设备,电器设施设备配置安全要求
- 世界上第一胎电子计算机的主要构成原件,世界上第一台计算机的主要构成原件是什么...
- 数字图像处理中的Region与XLD
- 攻防世界新手Misc writeup
- [bzoj3875][DP][最短路]骑士游戏
- 云计算-Linux-云计算是啥.什么是Linux-小白
- Axure怎么制作文字滚动的动态效果
- 王者荣耀怎么删除在服务器上建立的账号,王者荣耀账号怎么注销 王者荣耀账号注销方法...
- 如何修改HBulider X注释字体的颜色