zen-coding for notepad++,前端最佳手写代码编辑器
zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器。 zen-Coding插件支持多种编辑器,如UltraEdit,Notepad++等。
温馨提示:zen-Coding已经改名Emmet,并且搭建了一个新的网站:docs.emmet.io。
zen-Conding下载地址:http://code.google.com/p/zen-coding/downloads/list (进入下载页,选择相应的编辑器插件下载)
Notepad++ 是一款无比轻巧便捷的代码编辑工具。它无可挑剔的启动速度,优秀的语法高亮,干净整齐的代码缩进,便捷的括号高亮匹配赢得了无数人的喜爱。 但,其代码自动补全很“鸡肋”,或者说Notepad++根本就没有代码补全功能。平时改点源代码很方便,但是想单独的写点源代码就比较麻烦了,难道要一点点的都敲吗?先上段视频:
怎么样?惊呆了吧。Zen Coding–一款使用仿CSS选择器的语法来快速开发HTML和CSS的插件。它无视了编辑器的自动提示和自动完成,秒杀了你自定义的各种快捷键或者 AHK 的热字符串,以智能简洁高效的缩短输入,带给你超快速地书写各种复杂而枯燥的 HTML 和 CSS 代码的体验。
1.下载zen-Coding的Notepad++插件;(zen-Coding for Notepad++)
2.解压后将压缩包中的文件放入Notepad++安装目录下的plugins文件夹中;
3.重新启动Notepad++编辑器就能看到菜单栏上增加了一项Zen Coding。如下图所示:
二、zen-Coding的使用
zen-Coding的使用需要掌握CSS和HTML相关知识。其实只要对CSS的选择器比较熟悉,就可以得用简短的类似于CSS选择器的代码高效的编写出HTML代码。打开Notepad++编辑器,输入以下代码:
div#name
然后接着按一下快捷键ctrl+E,就会自动生成如下的HTML代码:
1
|
< div id = "name" ></ div > |
接下来看一个更高效的例子
div#header>div#logo+ul.nav>li.item-$*5>a
按ctrl+E生成如下代码
1
2
3
4
5
6
7
8
9
10
|
< div id = "header" >
< div id = "logo" ></ div >
< ul class = "nav" >
< li class = "item-1" >< a href = "" ></ a ></ li >
< li class = "item-2" >< a href = "" ></ a ></ li >
< li class = "item-3" >< a href = "" ></ a ></ li >
< li class = "item-4" >< a href = "" ></ a ></ li >
< li class = "item-5" >< a href = "" ></ a ></ li >
</ ul > </ div > |
Zend Coding语法
1.E | E#name | E.name
这里E表示元素,如p,div等。#name和.name分别表示ID和class属性。例:
div
1
|
< div ></ div > |
div#main
1
|
< div id = "main" ></ div > |
ul.item
1
|
< li class = "item" ></ li > |
如要显示一个id和多个class属性时,可以这样写
ul#nav.one.two
1
|
< ul id = "nav" class = "one two" ></ ul > |
2.E>E | E#name>E#name | E.#name>E.name | E.name>E.name
>表示父级嵌套子级。例:
div>span
1
|
< div >< span ></ span ></ div > |
div#nav>ul.main
1
2
3
|
< div id = "nav" >
< ul class = "main" ></ ul > </ div > |
3.E+E | E#name+E#name | E.#name+E.name | E.name+E.name
+号表示兄弟关系。例:
p+p
1
2
|
< p ></ p > < p ></ p > |
div#header+div#content+div#footer
1
2
3
|
< div id = "header" ></ div > < div id = "content" ></ div > < div id = "footer" ></ div > |
E+ (+号表示会生成默认的子元素)
table+
1
2
3
4
5
|
< table >
< tr >
< td ></ td >
</ tr > </ table > |
ul+
1
2
3
|
< ul >
< li ></ li > </ ul > |
dl+
1
2
3
4
|
< dl >
< dt ></ dt >
< dd ></ dd > </ dl > |
4.E*N
N:表示某个元素需要重复的次数。例:
p*3
1
2
3
|
< p ></ p > < p ></ p > < p ></ p > |
ul#nav>li.item*4
1
2
3
4
5
6
|
< ul id = "nav" >
< li class = "item" ></ li >
< li class = "item" ></ li >
< li class = "item" ></ li >
< li class = "item" ></ li > </ ul > |
5.E*N$
$:表示序号。例:
ul#nav>li.item-$*4
1
2
3
4
5
6
|
< ul id = "nav" >
< li class = "item-1" ></ li >
< li class = "item-2" ></ li >
< li class = "item-3" ></ li >
< li class = "item-4" ></ li > </ ul > |
6.E[attr]
attr:表示元素属性。例:
a[title]
1
|
< a href = "" title = "" > < / a > |
td[colspan=2]
1
|
< td colspan = "2" ></ td > |
7.E|filter
E|e
|e输出转义字符
div#wrap>div.content>p|e
1
2
3
4
5
|
<div id="wrap">
<div class="content">
<p></p>
</div> </div> |
8.( )控制嵌套分组关系
div#header>(h1.logo>a)+ul.nav>li.item*5>a
1
2
3
4
5
6
7
8
9
10
|
< div id = "header" >
< h1 class = "logo" >< a href = "" ></ a ></ h1 > /*h1和ul是兄弟关系*/
< ul class = "nav" >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
</ ul > </ div > |
div#header>h1.logo>a+ul.nav>li.item*5>a
1
2
3
4
5
6
7
8
9
10
11
12
|
< div id = "header" >
< h1 class = "logo" > /*h1和ul是父子关系*/
< a href = "" ></ a >
< ul class = "nav" >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
< li class = "item" >< a href = "" ></ a ></ li >
</ ul >
</ h1 > </ div > |
以上两种写法得到的结构是不一样的。 请大家注意观察。
练习:将以下代码用zen-coding写出来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< div id = "page" >
< div id = "header" >
< ul id = "nav" >
< li >< a href = "" ></ a ></ li >
< li >< a href = "" ></ a ></ li >
< li >< a href = "" ></ a ></ li >
< li >< a href = "" ></ a ></ li >
</ ul >
</ div >
< div id = "page" >
< h1 >< span ></ span ></ h1 >
< p ></ p >
< p ></ p >
</ div >
< div id = "footer" ></ div > </ div > |
答案:(选中下一空行试试)
div#page>(div#header>ul#nav>li*4>a)+(div#page>(h1>span)+p*2)+div#footer
三、Notepad++中zen-coding的使用
Expand Abbreviation(Ctrl+E):展开缩写
用法:输入缩写代码后,在代码末尾直接按快捷键得到完整代码。
Wrap with Abbreviation(Ctrl+Shift+A):嵌套父级元素
用法:选中需要嵌套父级元素的标签,按快捷键,在弹出的对话框中输入父级标签回车即可。例:
1
2
3
4
5
|
list1 list2 list3 list4 list5 |
选中以上内容,然后按【Ctrl+Shift+A】在弹出的对话框中输入ul.nav>li.item-$*>a[title]后按【Enter】键,就会生成如下代码
1
2
3
4
5
6
7
|
< ul class = "nav" >
< li class = "item-1" >< a href = "" title = "" >list1</ a ></ li >
< li class = "item-2" >< a href = "" title = "" >list2</ a ></ li >
< li class = "item-3" >< a href = "" title = "" >list3</ a ></ li >
< li class = "item-4" >< a href = "" title = "" >list4</ a ></ li >
< li class = "item-5" >< a href = "" title = "" >list5</ a ></ li > </ ul > |
Balance TagInward/Outward(Ctrl+Shift+D):选中代码块
选中当前光标所在的标记,再次按下可以依次选中其父标签。
Go to Next/Previous Edit Point( Ctrl+Alt+] / Ctrl+Alt+[ ):转到下一个/上一个编辑点
Merge Lines(Ctrl+Alt+M):合并行
将选中的多行代码合并为一行。压缩css、js代码为一行时,这个很方便。Ctrl+A,然后Ctrl+Alt+M,两下即可搞定,免去了动用压缩工具的麻烦。(当然这个只是简单地将代码合并为一行,并不能做更深入的代码压缩)
Toggle Comment(Alt+/):添加、移除注释
注释掉光标所在的代码块 (Notepad++ 自带的Ctrl+Shift+Q也可以用来注释代码)
Split/Join Tag(Ctrl+’ ):空标签转化
比如将 <div></div>
转化为 <div/>
, 反向亦可。
Remove Tag(Ctrl+Shift+’ ):移除标签
比如将 <div>hello world</div>
移除div标签,留下hello world。
zen-coding常用缩写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
html:4t (HTML 4.01 Transitional) html:4s (HTML 4.01) html:xt (XHTML 1.0) html:xs (XHTML 1.0 Strict) html:xxs (XHTML 1.1) html:5 (HTML5) meta:utf, meta:compat style, link:css, link:print, link:favicon, link:rss, script, script:src div, p, a, ul, ol, input:t, input:r ol+, dl+, table+, tr+, select+, map+, optg+ cc:ie6, cc:ie, cc:noie |
可以打开plugins\NppScripting\includes\Zen Coding.js这个JS文件看一看,熟悉Zen Coding自带的一些缩写规则。
zen-coding for notepad++,前端最佳手写代码编辑器的更多相关文章
- 前端面试手写代码——call、apply、bind
1 call.apply.bind 用法及对比 1.1 Function.prototype 三者都是Function原型上的方法,所有函数都能调用它们 Function.prototype.call ...
- 前端面试手写代码——模拟实现new运算符
目录 1 new 运算符简介 2 new 究竟干了什么事 3 模拟实现 new 运算符 4 补充 预备知识: 了解原型和原型链 了解this绑定 1 new 运算符简介 MDN文档:new 运算符创建 ...
- 前端面试手写代码——JS函数柯里化
目录 1 什么是函数柯里化 2 柯里化的作用和特点 2.1 参数复用 2.2 提前返回 2.3 延迟执行 3 封装通用柯里化工具函数 4 总结和补充 1 什么是函数柯里化 在计算机科学中,柯里化(Cu ...
- 前端面试手写代码——JS数组去重
目录 1 测试用例 2 JS 数组去重4大类型 2.1 元素比较型 2.1.1 双层 for 循环逐一比较(es5常用) 2.1.2 排序相邻比较 2.2 查找元素位置型 2.2.1 indexOf ...
- 2019前端面试系列——JS高频手写代码题
实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...
- ClownFish:比手写代码还快的通用数据访问层
http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...
- 手写代码自动实现自动布局,即Auto Layout的使用
手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIVi ...
- 如果选择构建ui界面方式,手写代码,xib和StoryBoard间的博弈
代码手写UI这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用. 大型多人合作项目使用代码构建UI,主要是看中纯代码在版本管理时的优势,检查追踪改动以及进行代码合并相对容易一些. 另外,代 ...
- .netER的未来路,关于基础是否重要和应该自己手写代码吗?
http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程 ...
随机推荐
- FAQ:注册表_键值类型
在注册表中,“键值项数据”可分为下面三种类型. 字符串值(REG_SZ) 该值一般用来作为文件描述和硬件标志,可以是字母.数字,也可以是汉字,但它是长度固定的文本字符串,最大长度不能超过255个字符. ...
- ubuntu下lamp环境配置及将window代码迁移至linux系统
因为最近要用需要去实现项目中的一个功能,比较好的做法就是在http://i.cnblogs.com/EditPosts.aspx?opt=1linux中实现.所以最近就将自己的代码全部迁移到linux ...
- WIX 学习笔记- 1 简介
一个项目 Code Complete 后,程序员们欢欣鼓舞,以为事情到此结束,可以 Happy 了.其实 Code Complete 五十之于百里.一个没有运行在设备上,为人们创造价值的项目是注定失败 ...
- Win32中安全的子类化(翻译)
关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe ...
- android 回调
调函数(callback Function),顾名思义,用于回调的函数. 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数.回调函数是一个工作流的一部分,由工作流来决定函数的调用 ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 读写分离提高 SQL Server 并发性
转自:http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=476 在一些大型的网站或者应用中,单台的SQL Serv ...
- SQL 语句优化—— (一) 操作符优化
1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以 ...
- 5分种让你了解javascript异步编程的前世今生,从onclick到await/async
javascript与异步编程 为了避免资源管理等复杂性的问题,javascript被设计为单线程的语言,即使有了html5 worker,也不能直接访问dom. javascript 设计之初是 ...
- php基础知识--文件操作
文件操作 文件 广义角度: 任何一个在磁盘上可以看到的符号(包含真正的文件及文件夹) 狭义角度: 真实存储数据的载体(不包含文件夹, 如doc文件,txt文件等) 文件操作: 对文件的增删改查 文件分 ...