Atom 是专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持 CSS,HTML,JavaScript 等网页编程语言。它支持宏,自动完成分屏功能,集成了文件管理器。
1、打开 Atom 的官网
2、点击”Download Windows Installer” — 之后双击 AtomSetup.exe
3、会默认安装到 C 盘,桌面会出现一个 Atom 的图标
菜单栏-分为六大块:
左边侧栏,自上而下分为六大部分:
Settings — 全局设置,可以设置文件的编码,菜单栏是否显示,忽略文件,文档缩进,字体大小,项目主目录等,这个比 sublime text 人性化,简洁明了的配置
Keybindings — 快捷键配置,默认快捷键都汇总于此了,很方便查询对应的快捷键的功能,也方便修改…人性化
Packages — 插件管理中心,可以设置插件,删除插件及禁用,无安装功能
Themes —主题管理中心,可以设置主题(支持鼠标选定,也支持写入配置文件生效),管理主题(删除及在线下载主题)
Updates — 目前功能只有一个,查询社区包的状态,随时随地的更新已安装的插件,Atom 软件的更新在 HELP 里面
Install — 目前分为两栏,自上而下,第一部分是搜索(可以搜索社区的插件),下面一部分会展示目前比较流行的插件(可以直接点击下载使用)
值得注意的是,配置文件的后缀是 cson,而不是 JSON,但是书写规范又很相似,,醉了…估计是社区搞出来的
英文 | 中文 | 快捷键 | 功能 |
---|---|---|---|
New Window | 新建界面窗口 | Ctrl + Shift + N | 如中文意思 |
New File | 新建文件 | Ctrl + N | 如中文意思 |
Open File | 打开文件 | Ctrl + O | 如中文意思 |
Open Folder | 打开文件夹 | Ctrl + Shift + O | 如中文意思 |
Add Project Folder | 加载项目目录 | Ctrl + Alt + O | 如中文意思 |
Reopen Last Item | 重新加载上次项目 | Ctrl + Shift + T | 如中文意思 |
Save | 保存文件 | Ctrl + S | 如中文意思 |
Save As | 另存为 | Ctrl + Shift +S | 如中文意思 |
Close Tab | 关闭当前编辑文档 | Ctrl + W | 如中文意思 |
Close Window | 关闭编辑器 | Ctrl + Shift + W | 如中文意思 |
Undo | 撤销 | Ctrl + Z | 如中文意思 |
Redo | 重做 | Ctrl + Y | 如中文意思 |
Cut | 剪切 | Shift + Delete | 如中文意思 |
Copy | 复制 | Ctrl + Insert | 如中文意思 |
Copy Path | 复制文档路径 | Ctrl + Shift + C | 如中文意思 |
Paste | 粘贴 | Shift + Insert | 如中文意思 |
Select All | 全选 | Ctrl + A | 如中文意思 |
Select Encoding | 选择编码 | Ctrl + Shift +U | 就是设置文件的编码 |
Go to Line | 跳转到某行 | Ctrl + G | 支持行列搜索,Row:Column |
Slect Grammar | 语法选择 | Ctrl + Shift + L | 和Sublime的Syntax设置功能一样 |
Reload | 重载 | Ctrl+ Alt +R | 重新载入当前编辑的文档 |
Toggle Full Screen | F11 | 全屏 | 如中文意思 |
Increase Font Size | 增大字体 | Ctrl + Shift + “+” | Sublime的Ctrl + 也能生效 |
Decrease Font Size | 减小字体 | Ctrl + Shift + “-“ | Sublime的Ctrl - 也能生效 |
Toggle Tree View | 展示隐藏目录树 | Ctrl + |Sublime的Ctrl+K,+B这里也可以生效 | |
Toggle Commadn palette | 全局搜索面板 | Ctrl + Shift + P | 和Sublime的大同小异 |
Select Line | 选定一行 | Ctrl + L | 如中文意思 |
Select First Character of Line | 选定光标至行首 | Shift + Home | 如中文意思 |
Slect End of Line | 选定光标至行尾 | Shift + End | 如中文意思 |
Select to Top | 选定光标处至文档首行 | Ctrl + Shift + Home | 就是光标处作为分割线,取文档上部分 |
Select to Bottom | 选定光标处至文档尾行 | Ctrl + Shfit + End | 就是光标处作为分割线,取文档下部分 |
Find in Buffer | 从缓存器搜索 | Ctrl + F | 与Sublime一致 |
Replace in Buffer | 高级替换 | Ctrl + Shift + F | 与Sublime一致 |
Select Next | 匹配选定下一个 | Ctrl + D | 和Sublime一模一样有木有 |
Select All | 匹配选定所有 | Alt + F3 | 和Sublime一模一样有木有 |
Find File | 查询文件,选定打开 | Ctrl + P | 与Sublime不一样 |
Delte End of Word | 删除光标处至词尾 | Ctrl + Del | 如中文意思 |
Duplicate Line | Ctrl + Shift + D | 如中文意思 | |
Delete Line | 删除一行 | Ctrl + Shift + K | 如中文意思 |
Toggle Comment | 启用注释 | Ctrl + / | 与Sublime一致 |
Toggle developer tools | 打开Chrome调试器 | Ctrl + Shift + I | 神奇啊 |
Indent | 增加缩进 | Ctrl + [ | 向右缩进 |
Outdent | 减少缩进 | Ctrl + ] | 向左缩进 |
Move Line Up | 行向上移动 | Ctrl + up | 如字面意思 |
Move Line Down | 行向下移动 | Ctrl + Down | 如字面意思 |
Join Lines | 行链接 | Ctrl + J | 追加 |
newline-below | 光标之下增加一行 | Ctrl + Enter | 与sublime 一致 |
editor:newline-above | 光标之上增加一行 | Ctrl + Shift + Enter | 与sublime 一致 |
pane:show-next-item | 切换编辑的标签页 | Ctrl + Tab | 如中文意思 |
Fuzzy Finder | 文件跳转面板 | Ctrl + T | 如字面意思 |
Select Line Move above | 选中行上移 | Ctrl + up | 如中文意思 |
Select Line Move below | 选中行下移 | Ctrl + down | 如中文意思 |
Symbol-view | 进入变量、函数跳转面板。 | Ctrl + R | 如中文意思 |
比较新奇的功能,,眼前一亮啊!!似曾相识有木有,CHROME 的 Web 调试器!
主题和插件这方面,比 Sublime Text 人性化多了..一些比较用心的作者增加了二度设置功能。
何为二度设置,就是不用手写代码修改配置文件,点点鼠标,填填输入框就能生效,主题以 isotope-ui 这个做例子介绍,看图:
一般有二度设置的,最下面一块都有 readme 或者其他引导教程,插件的二度设置和主题大同小异,有 二度内部都是插件功能的启用及代码部署教程,感觉比 Sublime 人性化好多,sublime 的插件说明要自己上 Github 或者 package control 查看。
内部自带的主题就不介绍了,都挺耐看的
主题名字 | 描述 | 个人评价 |
---|---|---|
isotope-ui | A clean and configurable UI theme. | 高贵黑,但是不带语法主题,支持高级自定义 |
seti-UI | A dark colored UI theme for atom with custom file icons | 扁平化磨砂黑,不带语法主题,自带了文件图标(还行) |
monokai-flat | 用过sublime flat主题的都知道 | 赞赞,熟悉的气息 |
1.Emmet — 用过都说好,神器;有个别快捷键会和 Markdown preview 快捷键冲突,改下就好了
2.autoprefixer — 用来补充 css 前缀的,会自动生成多个浏览器的前缀
3.color-picker — 取色器,太赞了有木有,比 sublime 那个好用,不卡,启动超快
4.linter — 这货默认可以识别多门语言的错误,但是不细致,属于主插件,可以针对性的安装更细致的检查插件(太多,不一一列出,下面是前端可能用到的)
5.autocomplete-plus — 完善自带 autocomplete,有二度设置,接下来列出的一些有二度设置
autocomplete-css — 你懂得,更加细致
Atom 编辑器支持自定义按键绑定,文件格式是 CSON;何为 CSON,官方解释: This file uses CoffeeScript Object Notation (CSON)。 我的解释: JSON + CoffeeScript,写法基本是 JSON 的写法。
如图:
设置内的键盘映射图很好的说明了
按键绑定 = 快捷键(Keystroke) + 执行命令(Command) + 来源(Source) + 选择器(Selector)
快捷键不用解释了
执行命令就是按下快捷键所调用的命令
来源就是命令来自来源,比如 core 就是内置核心命令,Atom beautifier 是我安装的插件
选择器可以理解为匹配,学过 CSS/JQ 的一听就懂了
官方范例:
'atom-text-editor': 'enter': 'editor:newline' 'atom-workspace': 'ctrl-shift-p': 'core:move-up' 'ctrl-p': 'core:move-down'
第二部分我的截图,显示了 Ctrl + Alt + F 有多个冲突,其中一个就是排版插件,Atom Beautifier如何让其生效呢?
'.editor': 'ctrl-shift-alt-f':'beautifier'
这样就可以了,是不是很简单?当然,这只是按键绑定的基础教程;还有更高级的绑定,比如 overlay(覆盖),unset(取消设置值)等。
用了 Atom 之后是不是发现,每次打开工作目录,保存退出后重新打开软件,目录一片空白。Sublime 和 DW 的快捷键预览 Html 功能是不是很喜欢,而 Atom 没有。
这个功能,截止目前最新的 0.198 版本还木有实现,这里我们用插件来实现这个功能;但是官方说,”记住上一次打开的目录”这个功能已经内置到下一个版本(集成插件),也就是正式版 1.0插件的作者也声明了,看此段话:The Atom.io team is hopefully building a version of this into core for 1.0! https://github.com/atom/atom/issues/1603。
插件简介: An Atom.io package that automatically repoens the last project and files you were working on.
安装完毕就实现了记忆功能了。不用过多设置,你第一次加载了工作目录后,正常退出打开还是自动加载改目录,且正在编辑的文件也同样保持编辑状态。
对于前端开发来说,浏览器预览功能必须要有的有木有。不然每次都要自己手动拖拉文件到浏览器比较麻烦。
插件简介: Run in Browser will open the current pane in the default web browser
默认的用法,看下面
'atom-text-editor': 'f12':'rib:run-in-browser' 'ctrl-shift-space':'autocomplete:toggle'
温馨提示:插件的安装
- setting 内部搜索安装
- 上 Github 下载插件,放在 atom 目录下的 package,重开打开软件会自动识别
- 使用 apm 命令安装,例:apm install run-in-browser
Atom 把 core 的核心插件 autocomplete 替换成 autocomplete plus。
"*": "exception-reporting": userId: "dce1a874-569c-0d60-1714-66461c6d20f9" core: themes: [ "graphite-ui" "seti-monokai" ] disabledPackages: [ ] editor: invisibles: {} softWrapAtPreferredLineLength: true softWrap: true fontFamily: "monoca" fontSize: 20 showIndentGuide: true linter: statusBar: "Show all errors" minimap: scrollAnimation: true "tree-view": hideVcsIgnoredFiles: true "autocomplete-plus": {} "linter-csslint": {} "vim-mode": startInInsertMode: true "filetype-color": enabled: "true" welcome: showOnStartup: true; "isotope-ui": {} "file-icons": onChanges: true forceShow: true "atom-beautify": _analyticsUserId: "cde3641c-d5ee-4ccb-9d45-37f85f7e98e9" csslint: validateOnChange: true autosave: enabled: true
从上面的代码可以看出配置文件是作用于全局的。
最主要分为两大类,一类是 core,一类是 editor。
下面这个版本是加注释的(我用#
开头的都是注释),大伙可以参考下。
"*": #这个用户ID用于提交异常的,官方描述:Reports uncaught Atom exception to bugsnag.com "exception-reporting": userId: "dce1a874-569c-0d60-1714-66461c6d20f9" core: #主题设置,主题和语法主题同时配置需要用中括号包含;若是单一主题则不需要,只需要双引号即可. themes: [ "graphite-ui" "seti-monokai" ] #这里跟Sublime Text的配置"ignored_packages": ["package_name"]一样的效果,禁用某某插件 disabledPackages: [ ] editor: invisibles: {} #表示是否按照上面设置过的「推荐行宽(默认 80 个字符)」来折行,否则默认按照屏幕宽度来折行 softWrapAtPreferredLineLength: true #是否开启折行 softWrap: true #字体及字体大小 fontFamily: "monoca" fontSize: 20 #显示缩进辅助线 showIndentGuide: true #这一块基本都是所有插件的配置 ,具体都可以参考插件作者的介绍再做调整 #显示所有错误 linter: statusBar: "Show all errors" #这个还有多个参数,可以配置是否高亮显示颜色等,此处是启用滚动动画 minimap: scrollAnimation: true #忽略显示一些文件 "tree-view": hideVcsIgnoredFiles: true #待进一步自定义 "autocomplete-plus": {} #待进一步自定义 "linter-csslint": {} #vim-mode这个插件默认启用的方式是插入,而不是命令模式 "vim-mode": startInInsertMode: true #这个是更改文件类型颜色(插件),这里启用了 "filetype-color": enabled: "true" #启用atom的自动进入引导界面..蛮实用的 welcome: showOnStartup: true; #UI主题的自定义,,空则不生效 "isotope-ui": {} #插件生效,更多样化的文件图标 "file-icons": onChanges: true forceShow: true #这个是排版插件带的,,这里的用户ID的作用不清楚 "atom-beautify": _analyticsUserId: "cde3641c-d5ee-4ccb-9d45-37f85f7e98e9" #在文件更改时候生效(进行查询错误) csslint: validateOnChange: true #这个是内置的核心插件,自动保存功能,挺实用的 autosave: enabled: true
新版本还有有众多改进的,我仔细的查询了 core 插件,丰富了许多,也抛弃了许多过气的 API;有很多功能让 Atom 更加人性化了…比如更改文件编码,查询项目内的文件进行编辑等等。
简言之,Emmet 的前身是大名鼎鼎的 Zen coding;
只有一个,加快 Web 开发(编码速度)。
文档初始化
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body></body></html>
<!-简写格式我就放在注释里面啦啦!!--> <!--#test.test--> <div id="test" class="test"> </div> <!-- p#test.test --> <p id="test" class="test"></p> <!-- a[href="http://www.51coolma.cn"]{文本内容--我是GEEK} --> <a href="http://www.51coolma.cn">文本内容--我是GEEK</a>
<!-- div>ul>li 后代 --><div> <ul> <li></li> </ul></div><!-- div>p+p 兄弟--><div> <p></p> <p></p></div><!-- div>p>ul>li>^span+b 上级--><div> <p> <ul> <li></li> <span></span> <b></b> </ul> </p></div>
<!-- div>ul>(li>a)*2 --><div> <ul> <li><a href=""></a></li> <li><a href=""></a></li> </ul></div><!-- div>ul>(li>a{文本$$})*2 --><!--$是匹配数字,一个代表1开始,两个01开始,依次001--><div> <ul> <li><a href="">文本01</a></li> <li><a href="">文本02</a></li> </ul></div><!-- div>ul>(li>a{文本$@-})*3 --><!-- @-代表启用自减,降序排列 --><div> <ul> <li><a href="">文本3</a></li> <li><a href="">文本2</a></li> <li><a href="">文本1</a></li> </ul></div><!-- div>ul>(li>a{文本$@2})*5 --><!-- $@number 代表几号开始出现数字 --><div> <ul> <li><a href="">文本2</a></li> <li><a href="">文本3</a></li> <li><a href="">文本4</a></li> <li><a href="">文本5</a></li> <li><a href="">文本6</a></li> </ul></div>
(#header>.nav>ul>(li>a{首页/美女/关于/……})*5)+(#container>(#(.left_sidebar>.category>ul>(li>a[herf=”#” title=”这是测试链接啊”]{我是侧边栏链接$$$})*5)+(#right_content>ul>li>a[href=”#”]>(img[alt=”哟吼吼吼” src=” “])+span{这是用来描述图片用的}*12)))+#footer>ul>(li>a{关于/联系我们/…..})*4
只是简单的排版下添加了下背景颜色
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>这是一个测试DEMO</title> <style> *{margin:0;padding:0} ul{list-style: none} #header{height:300px;width:100%;background: #5ecc17;border:2px solid #000;} #container{margin:0 auto;height:500px;width:800px;background: #e97726;border:1px solid #000;} #footer{height:200px;width:100%;background: #000;border:1px solid #000;} .left_sidebar{float:left;background: #02c4bc;height:500px;border:1px solid #000;} .right_content{float:right;background: #113a0d;height:500px;border:1px solid #000;} </style></head><body> <div id="header"> <div class="nav"> <ul> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> </ul> </div> </div> <div id="container"> <div id=""> <div class="left_sidebar"> <div class="category"> <ul> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接001</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接002</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接003</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接004</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接005</a></li> </ul> </div> </div> </div> <div id="right_content"> <ul> <li><a href="#"> <img src=" " alt="哟吼吼吼"> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> </a></li> </ul> </div> </div> <div id="footer"> <ul> <li><a href="">关于/联系我们/.....</a></li> <li><a href="">关于/联系我们/.....</a></li> <li><a href="">关于/联系我们/.....</a></li> <li><a href="">关于/联系我们/.....</a></li> </ul> </div></body></html>
CSS 的写法和 HTML 大同小异,emmet 也能写 IE hack,浏览器前缀等。
官网的 Emmet Cheat Sheet :http://docs.emmet.io/cheat-sheet/
何为分屏..请看此图
用过 linux 的小伙伴都知道,分屏耍的好,可以提高工作效率的。
1.最简易的,进入设置中心的快捷键列表,搜索 pane 和 split 就可以看到命令和选择器了。
2.查询官方手册。
有些失效了.就是按了没反应,应该和一些插件冲突了。
为何这样自定义我写在注释里面了…vi/vim。
#分屏快捷键自定义#alt-fkey是分屏的方向,仿vim模式#ctrl-fkey是光标聚焦的窗口.选择分屏窗口的.也是仿vim模式;#vim上下左右(j,k,h,l),这里对应(f6,f7,f5,f8)'body': 'alt-f7':'pane:split-up' 'alt-f6':'pane:split-down' 'alt-f5':'pane:split-left' 'alt-f8':'pane:split-right' 'ctrl-k ctrl-c':'pane:close' 'ctrl-f5':'window:focus-pane-on-left' 'ctrl-f8':'window:focus-pane-on-right' 'ctrl-f7':'window:focus-pane-above' 'ctrl-f6':'window:focus-pane-below'
值得一提的是,Atom 和 sublime 一样支持复合快捷键的,上面的配置文件就有一条。
'ctrl-k ctrl-c':'pane:close'
这条命令就是按下 control + k ,松开 K 而 control 不松开,再按下 c 生效….关闭当前的窗口。
Tips:(若是没有启用自身插件二步设置里面的 Use entire window)是默认在侧边栏生效的,若是勾选了那个,按下快捷键后整个目录树独占一个窗口[平铺]。默认生效的快捷键是Ctrl + Alt + o 。
'atom-workspace': 'ctrl-alt-o':'tree-view-finder:toggle'
若是有其他插件和这个快捷键冲突了,在个人 keymap 里面修改。
官方网站只有一句描述:Makes your code beautiful(让你的代码更漂亮),通俗点讲:CSScomb 是用来排版 CSS 代码的,可以说是格式化插件,依赖 nodejs。
官方网站: CSScomb
支持许多编辑器,比如 Sublime/Atom/brackets 等
昨天写了篇 CSS3 的文章,发现代码有点混乱,人力排版有点,所以跑去 Atom 插件库寻找 csscomb。
Atom -> settings -> install -> csscomb
下图三个蓝色圈圈的功能基本一致,第一个是官方的,今天的主角是黄色的。
默认快捷键有两个 [还可以使用鼠标点击插件调用]
切换排版风格(Ready-made configs),看描述和看图
默认快捷键参数
'atom-text-editor': 'ctrl-alt-c':'css-comb:comb'
针对用户群:喜欢折腾,有自己风格的小伙伴,这里只是展示,具体小伙伴自己可以参考官方提供的文档进行定制。看到上面那个 common config,选中 custom config [Edit config file],进入到定制参数页面,格式是使用 JSON 写的。
{ "help": "About options https://github.com/csscomb/csscomb.js/blob/master/doc/options.md", "exclude": ["node_modules/**"], "verbose": true, "always-semicolon": true, "block-indent": " ", "colon-space": ["", " "], "color-case": "lower", "color-shorthand": true, "element-case": "lower", "eof-newline": true, "leading-zero": false, "quotes": "single", "remove-empty-rulesets": true, "rule-indent": " ", "stick-brace": "
", "strip-spaces": true, "unitless-zero": true, "vendor-prefix-align": true}
每次预览 HTML 页面,都需要打开各种浏览器;哪怕不是调试,只是为了查看下效果;切换来切换去,各种刷新,感觉有些浪费时间;以前用过 DW 的实时预览,感觉这个功能很赞;又踏上了 atom 插件仓库慢慢寻找之路......
官方描述:A live preview tool for Atom Editor.简言之:Atom编辑器内实时预览的工具
1.通过命令行安装
apm install atom-html-preview
2.通过编辑器内部的 install 搜索 atom-html-preview
安装
CTRL + P
调用,会和内置核心插件冲突(切换文件那个) — 非常不好CTRL + F12
(感觉方便使用且没有冲突的快捷键) #实时浏览器调用快捷键 'atom-text-editor': 'ctrl-F12':'atom-html-preview:toggle'
写在 keymap 里面的权重是最高的......较新版本的 atom 内置了 Dev Live Reload 这个插件;
这个插件的作用就是重新加载所有样式和规则,有点类似 linux 的 source xx.sh 一样..即时生效调用快捷键是 CTRL + SHIFT + ALT +R
当然,关闭 atom 再开 atom 编辑器也能达到重新加载所有样式规则的效果......
我用 BS 框架写的页面来测试….可以正确预览,内部 css 是 cdn 也能正确识别。
跑到该插件的 GitHub 仓库页面,只看到一些 cson 规则,没有调用外部浏览器。
那么答案只有一个….就是 chromium 框架….所以内核应该也是 blink
以下是引用外部描述的 atom[不知道是不是官方]
Web 本地应用程序
Atom 是一款基于 Web 技术的桌面应用程序,和其他桌面应用程序一样,它也拥有自己的图标、本地菜单、对话框以及访问整个文件系统的权限。
无论你是调整 Atom 的 CSS 接口还是添加一些 HTML 和 JavaScript 主要功能,它都可以被你轻松控制,并且使用起来非常方便。
插件作者:Hackafe
功能描述:Synchronize settings, keymaps, user styles, init script, snippets and installed packages across Atom instances.(简言之就是可以同步 Atom 的设置文件,自定义快捷键,用户风格,初始化脚本及代码片段,还支持已安装的插件同步)
Features
Sync Atom's and package settingsSync installed packagesSync user keymapsSync user stylesSync user init scriptSync snippetsSync user defined text filesManual backup/restore to a gist
看图
最后我去研究了下他为啥用到 gist 的…原来是为了备份配置文件;
使用的是 coffee 脚本保存;
看图
备份成功和失败都有一条信息提醒,看图
其他推荐:
Atom-Material 这个主题真心不错,是 Android material 风格。
官方正式版虽然内置了.autocomplete-plus
;最为明显的一个功能就是记忆你已经输入过的名称进行匹配;但是针对于某些语言来说,还是有些不足的….其中 JS 的补全上就明显不足了…所以需要借助插件来拓展。
下载地址:https://atom.io/packages/atom-ternjs
官方描述:Javascript code intelligence for atom with tern.js. Uses suggestion provider by autocomplete-plus.
简言之,就是 JS 代码智能提示,个人也希望以后可以直接内置到 atom 中,而不是作为第三方插件!!
此插件依赖两个东东,git 和 nodejs ; 具体可以参考我博客里面的其他博文。
- apm install atom-ternjs- settings 内部搜索插件名
效果图
一款好的代码片段插件可以提高我们写代码的效率。这是一个不争的事实;今天,我要推荐的这一款,就是可以快速写 JQ 的插件。
下载地址:https://atom.io/packages/jquery-snippets
插件作者: james2doyle
最简易的安装方式,进入设置中心搜索 Jquery-snippets ->install
即可
似乎不能即时生效,重启下 atom 程序就生效了
注: 像 slideDown,click 这些也涵盖了….但是作者木有列出来。
输入 snippet 简写,tab 键或者 Ente r触发补全,我就演示几个,其他小伙伴自己折腾。
代码片段内含简单的占位解释字符,简直就是模版,连手册都省了[对于用习惯的人来说]
默认编辑位置会出现在第一个参数的单引号内部,省去了选中删除的功夫,很实在。
基本涵盖了 JQ 的所有方法和事件。
ajax : ajax 请求
slideDown: 下拉动画效果
toggleClass: 切换生效增加类
这款插件就比较重量级了,用熟悉了写原生 JS 的效率要提升很多。而且,不仅支持 JS 还包含了 nodejs snippet。
插件作者: zenorocha
Github地址 : https://github.com/zenorocha/atom-javascript-snippets
内置了丰富的 JS snippet。而且也很好理解和记忆,耍多了会上手的。
[cd] console.dir — 这条命令可以遍历一个对象内容
console.dir(${1:obj});
[ce] console.error — 打印出信息带有错误图标
console.error(${1:obj});
[cl] console.log — 打印出信息
console.log(${1:obj});
[cw] console.warn — 打印带有警告图标的信息
console.warn(${1:obj});
[ae] addEventListener — 事件监听
${1:document}.addEventListener('${2:event}', function(e) { ${0:// body...}});
[ac] appendChild — 增加子元素
${1:document}.appendChild(${2:elem});
[rc] removeChild — 删除子元素
${1:document}.removeChild(${2:elem});
[cel] createElement — 创建元素
${1:document}.createElement(${2:elem});
[cdf] createDocumentFragment — 创建文档碎片节点
${1:document}.createDocumentFragment(${2:elem});
[ca] classList.add — 冷门属性,为了解决 className 不能解决出现,没用过
${1:document}.classList.add('${2:class}');
[ct] classList.toggle — 同上
${1:document}.classList.toggle('${2:class}');
[cr] classList.remove — 同上
${1:document}.classList.remove('${2:class}');
[gi] getElementById — 获取元素ID
${1:document}.getElementById('${2:id}');
[gc] getElementsByClassName — 获取元素类名[返回值为数组]
${1:document}.getElementsByClassName('${2:class}');
[gt] getElementsByTagName — 获取标签集合[返回值是一个nodeList,非数组]
${1:document}.getElementsByTagName('${2:tag}');
[ga] getAttribute — 获取属性值
${1:document}.getAttribute('${2:attr}');
[sa] setAttribute — 设置属性值
${1:document}.setAttribute('${2:attr}', ${3:value});
[ra] removeAttribute — 移除属性值
${1:document}.removeAttribute('${2:attr}');
[ih] innerHTML — 代码块插入 html 结构
${1:document}.innerHTML = '${2:elem}';
[tc] textContent — 纯文本,裸奔的 innerHTML
${1:document}.textContent = '${2:content}';
[qs] querySelector — HTML5 新属性,获取选择器,类似 JQ 的 $(‘div#name’)
${1:document}.querySelector('${2:selector}');
[qsa] querySelectorAll — 同上,都支持多个选择器,但这个返回一个 nodeList
${1:document}.querySelectorAll('${2:selector}');
[fe] forEach — 遍历数组或者对象用的方法
${1:myArray}.forEach(function(${2:elem}) { ${0:// body...}});
[fi] for in — 遍历对象用的方法
for (${1:prop} in ${2:obj}) { if (${2:obj}.hasOwnProperty(${1:prop})) { ${0:// body...} }}
[fn] function — 函数声明
function ${1:methodName} (${2:arguments}) { ${0:// body...}}
[afn] anonymous function —- 匿名函数
function(${1:arguments}) { ${0:// body...}}
[pr] prototype — 原型
${1:ClassName}.prototype.${2:methodName} = function(${3:arguments}) { ${0:// body...}}
[iife] immediately-invoked function expression — 函数表达式
(function(window, document, undefined) { ${0:// body...}})(window, document);
[call] function call — 回调函数
${1:methodName}.call(${2:context}, ${3:arguments})
[apply] function apply — 回调函数
${1:methodName}.apply(${2:context}, [${3:arguments}])
[ofn] function as a property of an object — 函数声明
${1:functionName}: function(${2:arguments}) { ${3:// body...}}
[si] setInterval — 根据设置时间不断调用的方法
setInterval(function() { ${0:// body...}}, ${1:delay});
[st] setTimeout — 同上,区别在于一般不会重复执行
setTimeout(function() { ${0:// body...}}, ${1:delay});
[ase] assert.equal
assert.equal(${1:actual}, ${2:expected});
[asd] assert.deepEqual
assert.deepEqual(${1:actual}, ${2:expected});
[asn] assert.notEqual
assert.notEqual(${1:actual}, ${2:expected});
[me] module.exports
module.exports = ${1:name};
[pe] process.exit
process.exit(${1:code});
[re] require — 请求模块
require('${1:module}');
[desc] describe
describe('${1:description}', function() { ${0:// body...}});
[ita] it asynchronous
it('${1:description}', function(done) { ${0:// body...}});
[its] it synchronous
it('${1:description}', function() { ${0:// body...}});
[itp] it pending
it('${1:description}');
[us] use strict — JS语法使用严格模式
'use strict';
[al] alert — 弹窗
alert('${1:msg}');
[pm] prompt — 提示弹窗
prompt('${1:msg}');
时间过去挺快,正式版已经出来许久了。目前最新版是 V1.0.8 从最初的各种莫名的 BUG,到现在慢慢的完善,使用过程可以明显的感觉到。Github 上这个项目依旧很活跃,插件库也越来越丰富。
作为进阶的开篇,再带上一次正式版的下载地址。
目前有 Github 和国内 CNPM 两个地方可以下
unset!
顾名思义,取消设置。这是 atom 的一大亮点,示例:
之前仿 VIM 的时候,发现怎么 overlay 这货还是生效,让我不得不改动为快捷键。然后去查询官方文档,发现了unset 功能,挺简单也很实用。直接取消快捷键的命令。
'atom-text-editor': 'alt-h':'unset!'
这么简单的一条命令。就直接取消了;因为在 keymap 里面的设置是权重是最高的。
这种功能待以后写 snippet 的时候一起说(现在还在折腾中~~)
附带一份个人分屏自定义快捷键
#设置候选全局上下移动及打开分割窗口'body': 'shift-alt-k':'core:move-up' #光标向上移动 'shift-alt-j':'core:move-down' #光标向下移动 'shift-alt-h':'core:move-left' #光标向左移动 'shift-alt-l':'core:move-right' #光标向右移动 'ctrl-h ctrl-h':'pane:split-left' #分割窗口 'ctrl-j ctrl-j':'pane:split-down' #分割窗口 'ctrl-k ctrl-k':'pane:split-up' #分割窗口 'ctrl-l ctrl-l':'pane:split-right' #分割窗口 'alt-h alt-h':'window:focus-pane-on-left' #移动左窗口 'alt-j alt-j':'window:focus-pane-below' #移动下窗口 'alt-k alt-k':'window:focus-pane-above' #移动上窗口 'alt-l alt-l':'window:focus-pane-on-right' #移动右窗口 'ctrl-d ctrl-d':'pane:close' #关闭面板
对于接触前端的小伙伴们,为了优化肯定是想尽办法的。atom 丰富的拓展接口,让 atom 变得更加强大。国外的大牛把几种常见的压缩集成到一个小插件里面。于是就有 atom-minify 这个快捷压缩神器。
作者: armin-pfaeffle
插件地址:https://atom.io/packages/atom-minify
设置非常丰富,一些图形化的设置已经满足一些小伙伴正常使用了。
atom 的许多特性插件都是大牛从 npm 那里搬过来封装的,所以就必须依赖各种模块,所以执行插件遇到各种错误的时候别虚,看下错误,缺啥补啥。
如果想玩自动化构建的,可以去了解下 gulp,通过丰富的插件,来实现更加复杂的功能,比如动态监听,压缩等等。
附上一个 Github 项目:https://github.com/crperlin/StartFrontendProject
个人写的 gulp 执行队列,涵盖了一些常用的功能,有兴趣的可以 fork 一起完善。
atom 编辑器内置一个 gulp 执行面板;
左边是探测到 gulpfile 的队列任务,单机即可运行,右边就是执行的状态预览。
本人只实现了三个面板,因为现在不用 grunt 了,可以汇总错误信息。
单纯的 gulp 面板只依赖两个插件
两者缺一不可;
bottom-dock 不仅仅可以实现 gulp 面板,还能实现 todo[很实用的功能],还有 grunt 队列也能实现;
这些功能都是同一个封装好的插件。
三个面板有些快捷键是公用的,有些是专用的,可以看下。
Bottom-dock 快捷键
GULP 面板快捷键
TODO 面板快捷键
atom 正式版发布到现在已经快半年了。有两个分支,一个是稳定【不推荐,直接用 pre 版本体验会更好】,一个预览版本 1.3.0-beta6,atom 版本更新期间各种插件的更新依旧活跃,还冒出了一些比较好玩的插件,比如这次要说的 activate-power-mode 插件。
插件的链接地址:https://atom.io/packages/activate-power-modeGithub项目地址:https://github.com/JoelBesada/activate-power-mode
安装非常简单,在内部设置的 install 搜索安装即可;也可以通过apm install activate-power-mode
调用方法很简单:
默认快捷键:ctrl + alt + o
;若是和其他插件有冲突,自行修改下即可;
也可以通过全局调用:ctrl+shift+p
,搜索【atom支持模糊搜索】,看图
这个效果仅作用当前的工作 tab 页面,也就是说你新建的 tab 工作页面是不产生效果的,若是需要产生效果;需要执行 window:reload 来重新加载工作目录或者页面,然后再次调用;
Atom 是专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持 CSS,HTML,JavaScript 等网页编程语言。它支持宏,自动完成分屏功能,集成了文件管理器。
1、打开 Atom 的官网
2、点击”Download Windows Installer” — 之后双击 AtomSetup.exe
3、会默认安装到 C 盘,桌面会出现一个 Atom 的图标
菜单栏-分为六大块:
左边侧栏,自上而下分为六大部分:
Settings — 全局设置,可以设置文件的编码,菜单栏是否显示,忽略文件,文档缩进,字体大小,项目主目录等,这个比 sublime text 人性化,简洁明了的配置
Keybindings — 快捷键配置,默认快捷键都汇总于此了,很方便查询对应的快捷键的功能,也方便修改…人性化
Packages — 插件管理中心,可以设置插件,删除插件及禁用,无安装功能
Themes —主题管理中心,可以设置主题(支持鼠标选定,也支持写入配置文件生效),管理主题(删除及在线下载主题)
Updates — 目前功能只有一个,查询社区包的状态,随时随地的更新已安装的插件,Atom 软件的更新在 HELP 里面
Install — 目前分为两栏,自上而下,第一部分是搜索(可以搜索社区的插件),下面一部分会展示目前比较流行的插件(可以直接点击下载使用)
值得注意的是,配置文件的后缀是 cson,而不是 JSON,但是书写规范又很相似,,醉了…估计是社区搞出来的
英文 | 中文 | 快捷键 | 功能 |
---|---|---|---|
New Window | 新建界面窗口 | Ctrl + Shift + N | 如中文意思 |
New File | 新建文件 | Ctrl + N | 如中文意思 |
Open File | 打开文件 | Ctrl + O | 如中文意思 |
Open Folder | 打开文件夹 | Ctrl + Shift + O | 如中文意思 |
Add Project Folder | 加载项目目录 | Ctrl + Alt + O | 如中文意思 |
Reopen Last Item | 重新加载上次项目 | Ctrl + Shift + T | 如中文意思 |
Save | 保存文件 | Ctrl + S | 如中文意思 |
Save As | 另存为 | Ctrl + Shift +S | 如中文意思 |
Close Tab | 关闭当前编辑文档 | Ctrl + W | 如中文意思 |
Close Window | 关闭编辑器 | Ctrl + Shift + W | 如中文意思 |
Undo | 撤销 | Ctrl + Z | 如中文意思 |
Redo | 重做 | Ctrl + Y | 如中文意思 |
Cut | 剪切 | Shift + Delete | 如中文意思 |
Copy | 复制 | Ctrl + Insert | 如中文意思 |
Copy Path | 复制文档路径 | Ctrl + Shift + C | 如中文意思 |
Paste | 粘贴 | Shift + Insert | 如中文意思 |
Select All | 全选 | Ctrl + A | 如中文意思 |
Select Encoding | 选择编码 | Ctrl + Shift +U | 就是设置文件的编码 |
Go to Line | 跳转到某行 | Ctrl + G | 支持行列搜索,Row:Column |
Slect Grammar | 语法选择 | Ctrl + Shift + L | 和Sublime的Syntax设置功能一样 |
Reload | 重载 | Ctrl+ Alt +R | 重新载入当前编辑的文档 |
Toggle Full Screen | F11 | 全屏 | 如中文意思 |
Increase Font Size | 增大字体 | Ctrl + Shift + “+” | Sublime的Ctrl + 也能生效 |
Decrease Font Size | 减小字体 | Ctrl + Shift + “-“ | Sublime的Ctrl - 也能生效 |
Toggle Tree View | 展示隐藏目录树 | Ctrl + |Sublime的Ctrl+K,+B这里也可以生效 | |
Toggle Commadn palette | 全局搜索面板 | Ctrl + Shift + P | 和Sublime的大同小异 |
Select Line | 选定一行 | Ctrl + L | 如中文意思 |
Select First Character of Line | 选定光标至行首 | Shift + Home | 如中文意思 |
Slect End of Line | 选定光标至行尾 | Shift + End | 如中文意思 |
Select to Top | 选定光标处至文档首行 | Ctrl + Shift + Home | 就是光标处作为分割线,取文档上部分 |
Select to Bottom | 选定光标处至文档尾行 | Ctrl + Shfit + End | 就是光标处作为分割线,取文档下部分 |
Find in Buffer | 从缓存器搜索 | Ctrl + F | 与Sublime一致 |
Replace in Buffer | 高级替换 | Ctrl + Shift + F | 与Sublime一致 |
Select Next | 匹配选定下一个 | Ctrl + D | 和Sublime一模一样有木有 |
Select All | 匹配选定所有 | Alt + F3 | 和Sublime一模一样有木有 |
Find File | 查询文件,选定打开 | Ctrl + P | 与Sublime不一样 |
Delte End of Word | 删除光标处至词尾 | Ctrl + Del | 如中文意思 |
Duplicate Line | Ctrl + Shift + D | 如中文意思 | |
Delete Line | 删除一行 | Ctrl + Shift + K | 如中文意思 |
Toggle Comment | 启用注释 | Ctrl + / | 与Sublime一致 |
Toggle developer tools | 打开Chrome调试器 | Ctrl + Shift + I | 神奇啊 |
Indent | 增加缩进 | Ctrl + [ | 向右缩进 |
Outdent | 减少缩进 | Ctrl + ] | 向左缩进 |
Move Line Up | 行向上移动 | Ctrl + up | 如字面意思 |
Move Line Down | 行向下移动 | Ctrl + Down | 如字面意思 |
Join Lines | 行链接 | Ctrl + J | 追加 |
newline-below | 光标之下增加一行 | Ctrl + Enter | 与sublime 一致 |
editor:newline-above | 光标之上增加一行 | Ctrl + Shift + Enter | 与sublime 一致 |
pane:show-next-item | 切换编辑的标签页 | Ctrl + Tab | 如中文意思 |
Fuzzy Finder | 文件跳转面板 | Ctrl + T | 如字面意思 |
Select Line Move above | 选中行上移 | Ctrl + up | 如中文意思 |
Select Line Move below | 选中行下移 | Ctrl + down | 如中文意思 |
Symbol-view | 进入变量、函数跳转面板。 | Ctrl + R | 如中文意思 |
比较新奇的功能,,眼前一亮啊!!似曾相识有木有,CHROME 的 Web 调试器!
主题和插件这方面,比 Sublime Text 人性化多了..一些比较用心的作者增加了二度设置功能。
何为二度设置,就是不用手写代码修改配置文件,点点鼠标,填填输入框就能生效,主题以 isotope-ui 这个做例子介绍,看图:
一般有二度设置的,最下面一块都有 readme 或者其他引导教程,插件的二度设置和主题大同小异,有 二度内部都是插件功能的启用及代码部署教程,感觉比 Sublime 人性化好多,sublime 的插件说明要自己上 Github 或者 package control 查看。
内部自带的主题就不介绍了,都挺耐看的
主题名字 | 描述 | 个人评价 |
---|---|---|
isotope-ui | A clean and configurable UI theme. | 高贵黑,但是不带语法主题,支持高级自定义 |
seti-UI | A dark colored UI theme for atom with custom file icons | 扁平化磨砂黑,不带语法主题,自带了文件图标(还行) |
monokai-flat | 用过sublime flat主题的都知道 | 赞赞,熟悉的气息 |
1.Emmet — 用过都说好,神器;有个别快捷键会和 Markdown preview 快捷键冲突,改下就好了
2.autoprefixer — 用来补充 css 前缀的,会自动生成多个浏览器的前缀
3.color-picker — 取色器,太赞了有木有,比 sublime 那个好用,不卡,启动超快
4.linter — 这货默认可以识别多门语言的错误,但是不细致,属于主插件,可以针对性的安装更细致的检查插件(太多,不一一列出,下面是前端可能用到的)
5.autocomplete-plus — 完善自带 autocomplete,有二度设置,接下来列出的一些有二度设置
autocomplete-css — 你懂得,更加细致
Atom 编辑器支持自定义按键绑定,文件格式是 CSON;何为 CSON,官方解释: This file uses CoffeeScript Object Notation (CSON)。 我的解释: JSON + CoffeeScript,写法基本是 JSON 的写法。
如图:
设置内的键盘映射图很好的说明了
按键绑定 = 快捷键(Keystroke) + 执行命令(Command) + 来源(Source) + 选择器(Selector)
快捷键不用解释了
执行命令就是按下快捷键所调用的命令
来源就是命令来自来源,比如 core 就是内置核心命令,Atom beautifier 是我安装的插件
选择器可以理解为匹配,学过 CSS/JQ 的一听就懂了
官方范例:
'atom-text-editor': 'enter': 'editor:newline' 'atom-workspace': 'ctrl-shift-p': 'core:move-up' 'ctrl-p': 'core:move-down'
第二部分我的截图,显示了 Ctrl + Alt + F 有多个冲突,其中一个就是排版插件,Atom Beautifier如何让其生效呢?
'.editor': 'ctrl-shift-alt-f':'beautifier'
这样就可以了,是不是很简单?当然,这只是按键绑定的基础教程;还有更高级的绑定,比如 overlay(覆盖),unset(取消设置值)等。
用了 Atom 之后是不是发现,每次打开工作目录,保存退出后重新打开软件,目录一片空白。Sublime 和 DW 的快捷键预览 Html 功能是不是很喜欢,而 Atom 没有。
这个功能,截止目前最新的 0.198 版本还木有实现,这里我们用插件来实现这个功能;但是官方说,”记住上一次打开的目录”这个功能已经内置到下一个版本(集成插件),也就是正式版 1.0插件的作者也声明了,看此段话:The Atom.io team is hopefully building a version of this into core for 1.0! https://github.com/atom/atom/issues/1603。
插件简介: An Atom.io package that automatically repoens the last project and files you were working on.
安装完毕就实现了记忆功能了。不用过多设置,你第一次加载了工作目录后,正常退出打开还是自动加载改目录,且正在编辑的文件也同样保持编辑状态。
对于前端开发来说,浏览器预览功能必须要有的有木有。不然每次都要自己手动拖拉文件到浏览器比较麻烦。
插件简介: Run in Browser will open the current pane in the default web browser
默认的用法,看下面
'atom-text-editor': 'f12':'rib:run-in-browser' 'ctrl-shift-space':'autocomplete:toggle'
温馨提示:插件的安装
- setting 内部搜索安装
- 上 Github 下载插件,放在 atom 目录下的 package,重开打开软件会自动识别
- 使用 apm 命令安装,例:apm install run-in-browser
Atom 把 core 的核心插件 autocomplete 替换成 autocomplete plus。
"*": "exception-reporting": userId: "dce1a874-569c-0d60-1714-66461c6d20f9" core: themes: [ "graphite-ui" "seti-monokai" ] disabledPackages: [ ] editor: invisibles: {} softWrapAtPreferredLineLength: true softWrap: true fontFamily: "monoca" fontSize: 20 showIndentGuide: true linter: statusBar: "Show all errors" minimap: scrollAnimation: true "tree-view": hideVcsIgnoredFiles: true "autocomplete-plus": {} "linter-csslint": {} "vim-mode": startInInsertMode: true "filetype-color": enabled: "true" welcome: showOnStartup: true; "isotope-ui": {} "file-icons": onChanges: true forceShow: true "atom-beautify": _analyticsUserId: "cde3641c-d5ee-4ccb-9d45-37f85f7e98e9" csslint: validateOnChange: true autosave: enabled: true
从上面的代码可以看出配置文件是作用于全局的。
最主要分为两大类,一类是 core,一类是 editor。
下面这个版本是加注释的(我用#
开头的都是注释),大伙可以参考下。
"*": #这个用户ID用于提交异常的,官方描述:Reports uncaught Atom exception to bugsnag.com "exception-reporting": userId: "dce1a874-569c-0d60-1714-66461c6d20f9" core: #主题设置,主题和语法主题同时配置需要用中括号包含;若是单一主题则不需要,只需要双引号即可. themes: [ "graphite-ui" "seti-monokai" ] #这里跟Sublime Text的配置"ignored_packages": ["package_name"]一样的效果,禁用某某插件 disabledPackages: [ ] editor: invisibles: {} #表示是否按照上面设置过的「推荐行宽(默认 80 个字符)」来折行,否则默认按照屏幕宽度来折行 softWrapAtPreferredLineLength: true #是否开启折行 softWrap: true #字体及字体大小 fontFamily: "monoca" fontSize: 20 #显示缩进辅助线 showIndentGuide: true #这一块基本都是所有插件的配置 ,具体都可以参考插件作者的介绍再做调整 #显示所有错误 linter: statusBar: "Show all errors" #这个还有多个参数,可以配置是否高亮显示颜色等,此处是启用滚动动画 minimap: scrollAnimation: true #忽略显示一些文件 "tree-view": hideVcsIgnoredFiles: true #待进一步自定义 "autocomplete-plus": {} #待进一步自定义 "linter-csslint": {} #vim-mode这个插件默认启用的方式是插入,而不是命令模式 "vim-mode": startInInsertMode: true #这个是更改文件类型颜色(插件),这里启用了 "filetype-color": enabled: "true" #启用atom的自动进入引导界面..蛮实用的 welcome: showOnStartup: true; #UI主题的自定义,,空则不生效 "isotope-ui": {} #插件生效,更多样化的文件图标 "file-icons": onChanges: true forceShow: true #这个是排版插件带的,,这里的用户ID的作用不清楚 "atom-beautify": _analyticsUserId: "cde3641c-d5ee-4ccb-9d45-37f85f7e98e9" #在文件更改时候生效(进行查询错误) csslint: validateOnChange: true #这个是内置的核心插件,自动保存功能,挺实用的 autosave: enabled: true
新版本还有有众多改进的,我仔细的查询了 core 插件,丰富了许多,也抛弃了许多过气的 API;有很多功能让 Atom 更加人性化了…比如更改文件编码,查询项目内的文件进行编辑等等。
简言之,Emmet 的前身是大名鼎鼎的 Zen coding;
只有一个,加快 Web 开发(编码速度)。
文档初始化
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body></body></html>
<!-简写格式我就放在注释里面啦啦!!--> <!--#test.test--> <div id="test" class="test"> </div> <!-- p#test.test --> <p id="test" class="test"></p> <!-- a[href="http://www.51coolma.cn"]{文本内容--我是GEEK} --> <a href="http://www.51coolma.cn">文本内容--我是GEEK</a>
<!-- div>ul>li 后代 --><div> <ul> <li></li> </ul></div><!-- div>p+p 兄弟--><div> <p></p> <p></p></div><!-- div>p>ul>li>^span+b 上级--><div> <p> <ul> <li></li> <span></span> <b></b> </ul> </p></div>
<!-- div>ul>(li>a)*2 --><div> <ul> <li><a href=""></a></li> <li><a href=""></a></li> </ul></div><!-- div>ul>(li>a{文本$$})*2 --><!--$是匹配数字,一个代表1开始,两个01开始,依次001--><div> <ul> <li><a href="">文本01</a></li> <li><a href="">文本02</a></li> </ul></div><!-- div>ul>(li>a{文本$@-})*3 --><!-- @-代表启用自减,降序排列 --><div> <ul> <li><a href="">文本3</a></li> <li><a href="">文本2</a></li> <li><a href="">文本1</a></li> </ul></div><!-- div>ul>(li>a{文本$@2})*5 --><!-- $@number 代表几号开始出现数字 --><div> <ul> <li><a href="">文本2</a></li> <li><a href="">文本3</a></li> <li><a href="">文本4</a></li> <li><a href="">文本5</a></li> <li><a href="">文本6</a></li> </ul></div>
(#header>.nav>ul>(li>a{首页/美女/关于/……})*5)+(#container>(#(.left_sidebar>.category>ul>(li>a[herf=”#” title=”这是测试链接啊”]{我是侧边栏链接$$$})*5)+(#right_content>ul>li>a[href=”#”]>(img[alt=”哟吼吼吼” src=” “])+span{这是用来描述图片用的}*12)))+#footer>ul>(li>a{关于/联系我们/…..})*4
只是简单的排版下添加了下背景颜色
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>这是一个测试DEMO</title> <style> *{margin:0;padding:0} ul{list-style: none} #header{height:300px;width:100%;background: #5ecc17;border:2px solid #000;} #container{margin:0 auto;height:500px;width:800px;background: #e97726;border:1px solid #000;} #footer{height:200px;width:100%;background: #000;border:1px solid #000;} .left_sidebar{float:left;background: #02c4bc;height:500px;border:1px solid #000;} .right_content{float:right;background: #113a0d;height:500px;border:1px solid #000;} </style></head><body> <div id="header"> <div class="nav"> <ul> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> <li><a href="">首页/美女/关于/......</a></li> </ul> </div> </div> <div id="container"> <div id=""> <div class="left_sidebar"> <div class="category"> <ul> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接001</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接002</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接003</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接004</a></li> <li><a href="" herf="#" title="这是测试链接啊">我是侧边栏链接005</a></li> </ul> </div> </div> </div> <div id="right_content"> <ul> <li><a href="#"> <img src=" " alt="哟吼吼吼"> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> <span>这是用来描述图片用的</span> </a></li> </ul> </div> </div> <div id="footer"> <ul> <li><a href="">关于/联系我们/.....</a></li> <li><a href="">关于/联系我们/.....</a></li> <li><a href="">关于/联系我们/.....</a></li> <li><a href="">关于/联系我们/.....</a></li> </ul> </div></body></html>
CSS 的写法和 HTML 大同小异,emmet 也能写 IE hack,浏览器前缀等。
官网的 Emmet Cheat Sheet :http://docs.emmet.io/cheat-sheet/
何为分屏..请看此图
用过 linux 的小伙伴都知道,分屏耍的好,可以提高工作效率的。
1.最简易的,进入设置中心的快捷键列表,搜索 pane 和 split 就可以看到命令和选择器了。
2.查询官方手册。
有些失效了.就是按了没反应,应该和一些插件冲突了。
为何这样自定义我写在注释里面了…vi/vim。
#分屏快捷键自定义#alt-fkey是分屏的方向,仿vim模式#ctrl-fkey是光标聚焦的窗口.选择分屏窗口的.也是仿vim模式;#vim上下左右(j,k,h,l),这里对应(f6,f7,f5,f8)'body': 'alt-f7':'pane:split-up' 'alt-f6':'pane:split-down' 'alt-f5':'pane:split-left' 'alt-f8':'pane:split-right' 'ctrl-k ctrl-c':'pane:close' 'ctrl-f5':'window:focus-pane-on-left' 'ctrl-f8':'window:focus-pane-on-right' 'ctrl-f7':'window:focus-pane-above' 'ctrl-f6':'window:focus-pane-below'
值得一提的是,Atom 和 sublime 一样支持复合快捷键的,上面的配置文件就有一条。
'ctrl-k ctrl-c':'pane:close'
这条命令就是按下 control + k ,松开 K 而 control 不松开,再按下 c 生效….关闭当前的窗口。
Tips:(若是没有启用自身插件二步设置里面的 Use entire window)是默认在侧边栏生效的,若是勾选了那个,按下快捷键后整个目录树独占一个窗口[平铺]。默认生效的快捷键是Ctrl + Alt + o 。
'atom-workspace': 'ctrl-alt-o':'tree-view-finder:toggle'
若是有其他插件和这个快捷键冲突了,在个人 keymap 里面修改。
官方网站只有一句描述:Makes your code beautiful(让你的代码更漂亮),通俗点讲:CSScomb 是用来排版 CSS 代码的,可以说是格式化插件,依赖 nodejs。
官方网站: CSScomb
支持许多编辑器,比如 Sublime/Atom/brackets 等
昨天写了篇 CSS3 的文章,发现代码有点混乱,人力排版有点,所以跑去 Atom 插件库寻找 csscomb。
Atom -> settings -> install -> csscomb
下图三个蓝色圈圈的功能基本一致,第一个是官方的,今天的主角是黄色的。
默认快捷键有两个 [还可以使用鼠标点击插件调用]
切换排版风格(Ready-made configs),看描述和看图
默认快捷键参数
'atom-text-editor': 'ctrl-alt-c':'css-comb:comb'
针对用户群:喜欢折腾,有自己风格的小伙伴,这里只是展示,具体小伙伴自己可以参考官方提供的文档进行定制。看到上面那个 common config,选中 custom config [Edit config file],进入到定制参数页面,格式是使用 JSON 写的。
{ "help": "About options https://github.com/csscomb/csscomb.js/blob/master/doc/options.md", "exclude": ["node_modules/**"], "verbose": true, "always-semicolon": true, "block-indent": " ", "colon-space": ["", " "], "color-case": "lower", "color-shorthand": true, "element-case": "lower", "eof-newline": true, "leading-zero": false, "quotes": "single", "remove-empty-rulesets": true, "rule-indent": " ", "stick-brace": "
", "strip-spaces": true, "unitless-zero": true, "vendor-prefix-align": true}
每次预览 HTML 页面,都需要打开各种浏览器;哪怕不是调试,只是为了查看下效果;切换来切换去,各种刷新,感觉有些浪费时间;以前用过 DW 的实时预览,感觉这个功能很赞;又踏上了 atom 插件仓库慢慢寻找之路......
官方描述:A live preview tool for Atom Editor.简言之:Atom编辑器内实时预览的工具
1.通过命令行安装
apm install atom-html-preview
2.通过编辑器内部的 install 搜索 atom-html-preview
安装
CTRL + P
调用,会和内置核心插件冲突(切换文件那个) — 非常不好CTRL + F12
(感觉方便使用且没有冲突的快捷键) #实时浏览器调用快捷键 'atom-text-editor': 'ctrl-F12':'atom-html-preview:toggle'
写在 keymap 里面的权重是最高的......较新版本的 atom 内置了 Dev Live Reload 这个插件;
这个插件的作用就是重新加载所有样式和规则,有点类似 linux 的 source xx.sh 一样..即时生效调用快捷键是 CTRL + SHIFT + ALT +R
当然,关闭 atom 再开 atom 编辑器也能达到重新加载所有样式规则的效果......
我用 BS 框架写的页面来测试….可以正确预览,内部 css 是 cdn 也能正确识别。
跑到该插件的 GitHub 仓库页面,只看到一些 cson 规则,没有调用外部浏览器。
那么答案只有一个….就是 chromium 框架….所以内核应该也是 blink
以下是引用外部描述的 atom[不知道是不是官方]
Web 本地应用程序
Atom 是一款基于 Web 技术的桌面应用程序,和其他桌面应用程序一样,它也拥有自己的图标、本地菜单、对话框以及访问整个文件系统的权限。
无论你是调整 Atom 的 CSS 接口还是添加一些 HTML 和 JavaScript 主要功能,它都可以被你轻松控制,并且使用起来非常方便。
插件作者:Hackafe
功能描述:Synchronize settings, keymaps, user styles, init script, snippets and installed packages across Atom instances.(简言之就是可以同步 Atom 的设置文件,自定义快捷键,用户风格,初始化脚本及代码片段,还支持已安装的插件同步)
Features
Sync Atom's and package settingsSync installed packagesSync user keymapsSync user stylesSync user init scriptSync snippetsSync user defined text filesManual backup/restore to a gist
看图
最后我去研究了下他为啥用到 gist 的…原来是为了备份配置文件;
使用的是 coffee 脚本保存;
看图
备份成功和失败都有一条信息提醒,看图
其他推荐:
Atom-Material 这个主题真心不错,是 Android material 风格。
官方正式版虽然内置了.autocomplete-plus
;最为明显的一个功能就是记忆你已经输入过的名称进行匹配;但是针对于某些语言来说,还是有些不足的….其中 JS 的补全上就明显不足了…所以需要借助插件来拓展。
下载地址:https://atom.io/packages/atom-ternjs
官方描述:Javascript code intelligence for atom with tern.js. Uses suggestion provider by autocomplete-plus.
简言之,就是 JS 代码智能提示,个人也希望以后可以直接内置到 atom 中,而不是作为第三方插件!!
此插件依赖两个东东,git 和 nodejs ; 具体可以参考我博客里面的其他博文。
- apm install atom-ternjs- settings 内部搜索插件名
效果图
一款好的代码片段插件可以提高我们写代码的效率。这是一个不争的事实;今天,我要推荐的这一款,就是可以快速写 JQ 的插件。
下载地址:https://atom.io/packages/jquery-snippets
插件作者: james2doyle
最简易的安装方式,进入设置中心搜索 Jquery-snippets ->install
即可
似乎不能即时生效,重启下 atom 程序就生效了
注: 像 slideDown,click 这些也涵盖了….但是作者木有列出来。
输入 snippet 简写,tab 键或者 Ente r触发补全,我就演示几个,其他小伙伴自己折腾。
代码片段内含简单的占位解释字符,简直就是模版,连手册都省了[对于用习惯的人来说]
默认编辑位置会出现在第一个参数的单引号内部,省去了选中删除的功夫,很实在。
基本涵盖了 JQ 的所有方法和事件。
ajax : ajax 请求
slideDown: 下拉动画效果
toggleClass: 切换生效增加类
这款插件就比较重量级了,用熟悉了写原生 JS 的效率要提升很多。而且,不仅支持 JS 还包含了 nodejs snippet。
插件作者: zenorocha
Github地址 : https://github.com/zenorocha/atom-javascript-snippets
内置了丰富的 JS snippet。而且也很好理解和记忆,耍多了会上手的。
[cd] console.dir — 这条命令可以遍历一个对象内容
console.dir(${1:obj});
[ce] console.error — 打印出信息带有错误图标
console.error(${1:obj});
[cl] console.log — 打印出信息
console.log(${1:obj});
[cw] console.warn — 打印带有警告图标的信息
console.warn(${1:obj});
[ae] addEventListener — 事件监听
${1:document}.addEventListener('${2:event}', function(e) { ${0:// body...}});
[ac] appendChild — 增加子元素
${1:document}.appendChild(${2:elem});
[rc] removeChild — 删除子元素
${1:document}.removeChild(${2:elem});
[cel] createElement — 创建元素
${1:document}.createElement(${2:elem});
[cdf] createDocumentFragment — 创建文档碎片节点
${1:document}.createDocumentFragment(${2:elem});
[ca] classList.add — 冷门属性,为了解决 className 不能解决出现,没用过
${1:document}.classList.add('${2:class}');
[ct] classList.toggle — 同上
${1:document}.classList.toggle('${2:class}');
[cr] classList.remove — 同上
${1:document}.classList.remove('${2:class}');
[gi] getElementById — 获取元素ID
${1:document}.getElementById('${2:id}');
[gc] getElementsByClassName — 获取元素类名[返回值为数组]
${1:document}.getElementsByClassName('${2:class}');
[gt] getElementsByTagName — 获取标签集合[返回值是一个nodeList,非数组]
${1:document}.getElementsByTagName('${2:tag}');
[ga] getAttribute — 获取属性值
${1:document}.getAttribute('${2:attr}');
[sa] setAttribute — 设置属性值
${1:document}.setAttribute('${2:attr}', ${3:value});
[ra] removeAttribute — 移除属性值
${1:document}.removeAttribute('${2:attr}');
[ih] innerHTML — 代码块插入 html 结构
${1:document}.innerHTML = '${2:elem}';
[tc] textContent — 纯文本,裸奔的 innerHTML
${1:document}.textContent = '${2:content}';
[qs] querySelector — HTML5 新属性,获取选择器,类似 JQ 的 $(‘div#name’)
${1:document}.querySelector('${2:selector}');
[qsa] querySelectorAll — 同上,都支持多个选择器,但这个返回一个 nodeList
${1:document}.querySelectorAll('${2:selector}');
[fe] forEach — 遍历数组或者对象用的方法
${1:myArray}.forEach(function(${2:elem}) { ${0:// body...}});
[fi] for in — 遍历对象用的方法
for (${1:prop} in ${2:obj}) { if (${2:obj}.hasOwnProperty(${1:prop})) { ${0:// body...} }}
[fn] function — 函数声明
function ${1:methodName} (${2:arguments}) { ${0:// body...}}
[afn] anonymous function —- 匿名函数
function(${1:arguments}) { ${0:// body...}}
[pr] prototype — 原型
${1:ClassName}.prototype.${2:methodName} = function(${3:arguments}) { ${0:// body...}}
[iife] immediately-invoked function expression — 函数表达式
(function(window, document, undefined) { ${0:// body...}})(window, document);
[call] function call — 回调函数
${1:methodName}.call(${2:context}, ${3:arguments})
[apply] function apply — 回调函数
${1:methodName}.apply(${2:context}, [${3:arguments}])
[ofn] function as a property of an object — 函数声明
${1:functionName}: function(${2:arguments}) { ${3:// body...}}
[si] setInterval — 根据设置时间不断调用的方法
setInterval(function() { ${0:// body...}}, ${1:delay});
[st] setTimeout — 同上,区别在于一般不会重复执行
setTimeout(function() { ${0:// body...}}, ${1:delay});
[ase] assert.equal
assert.equal(${1:actual}, ${2:expected});
[asd] assert.deepEqual
assert.deepEqual(${1:actual}, ${2:expected});
[asn] assert.notEqual
assert.notEqual(${1:actual}, ${2:expected});
[me] module.exports
module.exports = ${1:name};
[pe] process.exit
process.exit(${1:code});
[re] require — 请求模块
require('${1:module}');
[desc] describe
describe('${1:description}', function() { ${0:// body...}});
[ita] it asynchronous
it('${1:description}', function(done) { ${0:// body...}});
[its] it synchronous
it('${1:description}', function() { ${0:// body...}});
[itp] it pending
it('${1:description}');
[us] use strict — JS语法使用严格模式
'use strict';
[al] alert — 弹窗
alert('${1:msg}');
[pm] prompt — 提示弹窗
prompt('${1:msg}');
时间过去挺快,正式版已经出来许久了。目前最新版是 V1.0.8 从最初的各种莫名的 BUG,到现在慢慢的完善,使用过程可以明显的感觉到。Github 上这个项目依旧很活跃,插件库也越来越丰富。
作为进阶的开篇,再带上一次正式版的下载地址。
目前有 Github 和国内 CNPM 两个地方可以下
unset!
顾名思义,取消设置。这是 atom 的一大亮点,示例:
之前仿 VIM 的时候,发现怎么 overlay 这货还是生效,让我不得不改动为快捷键。然后去查询官方文档,发现了unset 功能,挺简单也很实用。直接取消快捷键的命令。
'atom-text-editor': 'alt-h':'unset!'
这么简单的一条命令。就直接取消了;因为在 keymap 里面的设置是权重是最高的。
这种功能待以后写 snippet 的时候一起说(现在还在折腾中~~)
附带一份个人分屏自定义快捷键
#设置候选全局上下移动及打开分割窗口'body': 'shift-alt-k':'core:move-up' #光标向上移动 'shift-alt-j':'core:move-down' #光标向下移动 'shift-alt-h':'core:move-left' #光标向左移动 'shift-alt-l':'core:move-right' #光标向右移动 'ctrl-h ctrl-h':'pane:split-left' #分割窗口 'ctrl-j ctrl-j':'pane:split-down' #分割窗口 'ctrl-k ctrl-k':'pane:split-up' #分割窗口 'ctrl-l ctrl-l':'pane:split-right' #分割窗口 'alt-h alt-h':'window:focus-pane-on-left' #移动左窗口 'alt-j alt-j':'window:focus-pane-below' #移动下窗口 'alt-k alt-k':'window:focus-pane-above' #移动上窗口 'alt-l alt-l':'window:focus-pane-on-right' #移动右窗口 'ctrl-d ctrl-d':'pane:close' #关闭面板
对于接触前端的小伙伴们,为了优化肯定是想尽办法的。atom 丰富的拓展接口,让 atom 变得更加强大。国外的大牛把几种常见的压缩集成到一个小插件里面。于是就有 atom-minify 这个快捷压缩神器。
作者: armin-pfaeffle
插件地址:https://atom.io/packages/atom-minify
设置非常丰富,一些图形化的设置已经满足一些小伙伴正常使用了。
atom 的许多特性插件都是大牛从 npm 那里搬过来封装的,所以就必须依赖各种模块,所以执行插件遇到各种错误的时候别虚,看下错误,缺啥补啥。
如果想玩自动化构建的,可以去了解下 gulp,通过丰富的插件,来实现更加复杂的功能,比如动态监听,压缩等等。
附上一个 Github 项目:https://github.com/crperlin/StartFrontendProject
个人写的 gulp 执行队列,涵盖了一些常用的功能,有兴趣的可以 fork 一起完善。
atom 编辑器内置一个 gulp 执行面板;
左边是探测到 gulpfile 的队列任务,单机即可运行,右边就是执行的状态预览。
本人只实现了三个面板,因为现在不用 grunt 了,可以汇总错误信息。
单纯的 gulp 面板只依赖两个插件
两者缺一不可;
bottom-dock 不仅仅可以实现 gulp 面板,还能实现 todo[很实用的功能],还有 grunt 队列也能实现;
这些功能都是同一个封装好的插件。
三个面板有些快捷键是公用的,有些是专用的,可以看下。
Bottom-dock 快捷键
GULP 面板快捷键
TODO 面板快捷键
atom 正式版发布到现在已经快半年了。有两个分支,一个是稳定【不推荐,直接用 pre 版本体验会更好】,一个预览版本 1.3.0-beta6,atom 版本更新期间各种插件的更新依旧活跃,还冒出了一些比较好玩的插件,比如这次要说的 activate-power-mode 插件。
插件的链接地址:https://atom.io/packages/activate-power-modeGithub项目地址:https://github.com/JoelBesada/activate-power-mode
安装非常简单,在内部设置的 install 搜索安装即可;也可以通过apm install activate-power-mode
调用方法很简单:
默认快捷键:ctrl + alt + o
;若是和其他插件有冲突,自行修改下即可;
也可以通过全局调用:ctrl+shift+p
,搜索【atom支持模糊搜索】,看图
这个效果仅作用当前的工作 tab 页面,也就是说你新建的 tab 工作页面是不产生效果的,若是需要产生效果;需要执行 window:reload 来重新加载工作目录或者页面,然后再次调用;
2017年8月15日,Github Atom 1.19.1 正式发布。Atom是由Github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言。它支持宏,自动完成分屏功能,集成了文件管理器。
本次得更新主要内容内容是:
相关链接
2017年8月15日,Github Atom 1.19.1 正式发布。Atom是由Github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言。它支持宏,自动完成分屏功能,集成了文件管理器。
本次得更新主要内容内容是:
相关链接