F's Blog

博客 收藏夹
Atom 编辑器

10 Nov 2015

号称21世纪的编辑器用着真不是盖的。

它其实就是一个浏览器,Linux 下 ctrl-shift-i 就会调出它的调试窗口。

浏览器天生的适合做编辑器啊,因为有 css,能够很好的渲染出文字,有 html,可以显示界面的框架。看来 界面被 HTML 统一是在所难免了。

编辑器就是让我们自己去依赖的,能有实现自己任何的想法,所有有了:

在 Atom 都有。

keymaps

快捷键很非常重要,它关系到最直接的编程体验,最好的感觉是手不用离键盘,把所有搞定。

快捷键方案有很多家,没有最好的一种,都可以参考,只有适合自己的,毕竟是自己在用键盘写代码。

有人喜欢 vim 的编辑模式和命令模式间的频繁切换,而我喜欢 emacs 的直接,而且在 sh 里也是通用的。 我配合用的是 atom-emacs-plus 这个插件,然后自定义。下一步我会把这些整合到一起发个 package,这样用着就比较方便了。

快捷键有个原则:常用的要快。这也是符合信息论的。

对快捷键排个序:

当然因人和键盘而异,我喜欢 emacs,用的是 HHKB2,Cap 改成了 Ctrl. 系统是 Mac 和 Linux 通用,所有尽量不使用 Cmd 键。

而且快捷键只有自己用了才知道是否合适,而且是在不短改进中的,追求的目的就是 —— 爽!不爽呢?那就改!它是你完全可控的,不用将就自己,放弃这个权利。这是一个学习的过程,把常用的换上来,不常用的换下去。

Snippets

可以自定义代码片段,一个 trigger 健,后接 tab 键就出来了。 可以在 ~/.atom/snippets.cson 里定义,默认 Atom 也带了主流语言的 snippets,可以在已经安装的 packages 里查看。

比如下面我定义写 markdown 的 snippet:

'.source.gfm':
  'title':
    'prefix': '---'
    'body': """
    ---
    layout: ${1: post}
    title: ${2: title}
    ---

    $3
    """

可以总结:

框架

编写 snippets 需要指定其作用域,就是用 css 选择器选出来。

Package

Atom 使用一个 package 的过程:

active 方法是必须有的,它只在第一次调用时执行,初始化实例变量,包括UI等,还有注册 command 及 command 执行的事件。

# Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable
@subscriptions = new CompositeDisposable

# Register command that toggles this view
@subscriptions.add atom.commands.add 'atom-workspace', 'your-name-word-count:toggle': => @toggle()

上面的代码用 atom.commands.add 在 ‘atom-workspace’ 空间里注册了命令 “your-name-word-count:toggle”, 当触发这个命令(快捷键或命令面板)时,它会去执行 toggle 方法。

然后用 @subscriptions.add 将这个命令添加到命令事件集合里, 这样其他命令就可以知道它被执行,也可以在这里订阅其他命令。

虽然命令在 active 里注册了,但怎么触发 active 方法呢?在 package.json 里注册:

"activationCommands": {
  "atom-workspace": "your-name-word-count:toggle"
}

这样 Atom 就会只加载这个方法名,只有当用户第一次触发时才调用 active。

参考官方的教程就很容易写一个package了。

我写完之后,最后一apm publish,竟然给发布上去了:ascii-art

感想

Atom 是 github 搞出来的,而 github 最初是基于 Rails 的,可以看到 Atom 受 Rails 的影响很大, 比如 用 CoffeeScript 和 Less,这是 Rails 默认的 js 和 css 的高级语言。

参考

本文由 付豪 创作,采用署名 4.0 国际(CC BY 4.0)创作共享协议进行许可,详细声明