Atom中设置你的Snippet,atom技巧(二)

我们经常需要对二维数组进行迭代,比如这样:
for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){
screen[x][y].setColor("black");
}
}
过上一段时间,你又要写这么一段代码:
for(int i = 0; i < rows; i++){
for(int j = 0; j< columns; j++){
objects[i][j].update();
}
}
如果你是程序员,那么你理应厌烦:又一次重复得输入for,[],{}……而且一个不小心,还很容易输入错误。浪费时间寻找哪里少了一个分号可不是你该做的事情。
那么不如来试试Snippet,一小段预先定义好格式的代码块。下次使用时,只需填入变化的部分。是的,就像填表一样。
在Atom中设置你的Snippet
为了在Atom中使用Snippet,你需要首先定义好你的代码块格式。
Linux环境下,进入Edit->Snippets...,相对应的,在Windows下是File->Snippets...。
这实际上是一个cson文件,格式如下:
'.source.python': # 在何种文件中使用这个Snippet
'python coding': # 对Snippet的简短说明
'prefix': 'coding' # 输入什么前缀可以触发这个Snippet
'body': '# -*- coding:utf8 -*-\n' # Snippet的内容
第一行指定在何种文件中使用Snippet,你可以在设置的Packages中的Installed Package里搜索你要用的编程语言。
点击对应的包,通常名字是:language-编程语言。在打开的包里看看Scope是什么。
常用的几种如下:
| 文件后缀 | Scope |
|---|---|
| .c .h | .source.c |
| .py | .source.python |
| .java | .source.java |
| .js | .source.js |
| .css | .source.css |
| .md | .source.gfm |
第一个示例:指定Python文件的编码
我们都知道,如果你在python2中使用中文,在Python文件开头,你需要添加这么一段代码,指定这个文件的编码格式:
# -*- coding:utf8 -*-
每次都要输入,重复!那就把它变成一段Snippet吧:
'.source.python':
'python coding':
'prefix': 'coding'
'body': '# -*- coding:utf8 -*-\n'
这样,在打开.py文件后,只需输入coding,然后按下Tab键,这段遍布着*的代码行就一下子输入成功了。
第二个示例:划分你的代码
还是在Python中,如果你想要添加一段像下面这样的代码,将你的.py文件划分成多块的话:
#=====================
# 数据爬取结束,开始匹配
#=====================
这时候,中间的文字是你每次都需要更改的部分,当然可以在输入其他部分后再移到中间部分进行编辑,但我们有更好的东西:
'.source.python':
'python coding':
'prefix': 'coding'
'body': '# -*- coding:utf8 -*-\n'
'section':
'prefix': 'section'
'body': '#=====================\n# $1\n#=====================\n$2'
注意,对同一后缀文件的Snippet,都得写在一起。
$1表示光标第一次所处的位置,按一下Tab后光标会移到$2所处的位置。
在这个例子中,输入section然后按Tab,光标就自动出现在这段代码的中间,输入完中间部分,再按Tab,光标就会移动到这段文字的最后。你可以继续编码,而无需浪费时间在移动光标上。
第三个示例:同时编辑多处
在上面,我们使用\n划分多行,但是行数一多,这样看起来就眼花缭乱了,我们可以使用"""来编写多行的Snippet:
'.source.java':
'iterate two dimension array':
'prefix' : 'for2'
'body' : """
for(int $1 = 0; $1 < $2; $1++){
for(int $3 = 0; $3 < $4; $3++){
$5[$1][$3]$6
}
}
$7
"""
Atom的一个优势就是可以同时修改文件的不同位置,Snippet自然支持这一点。
你会注意到,$1出现三次,这意味着一次键入,三处输入。这样不但快捷,还能保证命名一致。(错也会错成一样的)。
要注意的
- Snippet很方便,但只有你用起来的时候才能加速你的编码。要记得使用,直到肌肉有了记忆,自然而然地使用Snippet。
- Snippet的介绍似乎不是很重要,但安装了其他人的Snippet后,你需要这些介绍来进行区分,所以还是要认真编写的。
- 保持开心,如果Snippet用起来感觉不是爽而是痛苦,那就不要使用它。也许你会发现,这些重复的编码可以用其他的东西来解决,比如
map函数。
Atom中设置你的Snippet,atom技巧(二)的更多相关文章
- PHP的学习--在Atom中使用XDebug(Mac)
之前写过一篇博客<PHP的学习--在sublime中使用XDebug(Ubuntu)>,讲了在Ubuntu系统 sublime 中配置 XDebug,其实配置好之后,我也很少用,原因有两点 ...
- 【npm】如何在Atom中安装emmet和atom-beautify插件?
为了提高编写HTML和CSS的速度,最近尝试着在Atom中安装emmet插件,下面谈谈安装成功的过程 1首先我尝试了网上教程中介绍最多的方法:打开Atom的引导界面(Welcome Guide)中的i ...
- atom中开发vue常用插件
atom: 开发利器,界面友好,配色出色,好用的插件众多. language-vue: 这个是首推,因为它就是为vue而生的呀,支持很多vue里的提示.在空的vue页面敲tem,vue模板的提示就自动 ...
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
项目开发中的一些注意事项以及技巧总结 1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...
- iOS开发小技巧--iOS中设置applicationIconBadgeNumber遇到的问题
iOS中设置applicationIconBadgeNumber 在iOS7中直接设置applicationIconBadgeNumber没有问题,但是在iOS8之后设置applicationIcon ...
- Atom编辑器入门到精通(四) Atom使用进阶
在本节中将介绍Atom提供的更高级的使用技巧,通过这些技巧将会进一步提高你的代码编写效率 代码片段(Snippets) Snippets是一种在代码中快捷插入代码块的方式,下面是维基百科中对Snipp ...
- jboss:在standalone.xml中设置系统属性(system-properties)
就象在.net的web应用中,可以在web.config中设置appSettings一样,jboss的standalone.xml中也可以由开发人员自行添加系统属性,用法如下: </extens ...
- 如何在BIOS中设置RAID?
随着价格的下降和相应主板的支持,目前SATA硬盘已经逐渐成为主流.但由于受芯片组和操作系统的影响,不少用户对SATA硬盘的使用及安装系统掌握不足,今天小编就给大家介绍一下SATA硬盘的日常应用技巧,希 ...
- iOS中崩溃调试的使用和技巧总结 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题.简单的崩溃还好说,复杂的崩溃就需要我们通过解析Cras ...
随机推荐
- ios学习--结合UIImageView实现图片的移动和缩放
因为种种原因,需要在iphone应用中实现图片查看功能,由于iphone屏幕支持多点触摸,于是是想到用“手势”来实现图片的实时缩放和移动.借鉴无所不在的internet网络资料之后,终于实现此一功能, ...
- Linux 下8种优秀的屏幕录制机
导读 屏幕录制机已经成为常见的和良好的实践来记录一个重要桌面会话,例如,你想玩一个难度较大的游戏,并且向记录是如何完成的,或者你打算创建一个视频教程,入门文章或指南,或任何其他活动和记录你的桌面会话, ...
- poj_1258 prim最小生成树
题目大意 给定N个点,以及每两个点之间的路径长度,求出一个连接这N个点的方案,使得连接这N个点的总长度最短,求出该总长度. 题目分析 求最小生成树MST的模板题,直接使用prim算法进行求解. 实现( ...
- asp 中创建日志打印文件夹
string FilePath = HttpRuntime.BinDirectory.ToString(); string FileName = FilePath + "日志" + ...
- SQL使用union合并查询结果(转载)
1.UNION的作用 UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一 ...
- kettle中denormalizer(列转行)的使用
转载: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sucre.blog.51cto.com/1084905/1434015 ...
- Angular2+学习第3篇 基本知识-组件
一.插值表达式 基本用法与ng1一样. 可以使用 Angular 内置的 json 管道,来显示对象信息,管道用来格式化数据 import { Component } from '@angular/c ...
- 从0到1实现SourceTree连接Gitlab
见下面的链接 http://note.youdao.com/noteshare?id=3622d02a38464c524222ede1b4fb06d2 SourceTree下载地址:Windows V ...
- JAVA编程你必须知道的那些英文单词
第一章: JDK(Java Development Kit) java开发工具包 JVM(Java Virtual Machine) java虚拟机 Javac 编译命令 ...
- react-native 学习(三)
上一次讲到了react-native 的配置环境 和 如何去进行调试,这一次我们说一说,关于react-native的 样式兼容问题. 由于iphonex的发售,在兼容的时候,我门也需要去考虑ipho ...