如何评价 GitHub 发布的文本编辑器 Atom?

来源:互联网 发布:客户资料整理软件 编辑:程序博客网 时间:2024/05/01 12:52

https://www.zhihu.com/question/22867204#answer-31728806

这里是HN上的讨论:

GitHub's new text editor leaked on Twitter
这里是github page:
Atom · GitHub 好多repo啊

我不知道有没有知友了解更多情况?我很期待。

作者:尤雨溪
链接:https://www.zhihu.com/question/22867204/answer/22944645
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

今天拿到邀请试用了一会儿,可以明确的说跟 Sublime 没有关系。Sublime 是原生界面,脚本用的是 python;Atom 应该是基于 Chromium Embedded Framework,基本上就是个 web app,源码都是 CoffeeScript 写的,连界面都可以用 CSS 来自定义。


除了基本的操作和界面外,和 Sublime 最大的差别在于扩展性。Atom 非常强调模块化,很多默认功能也都是开源的模块。自带友好的模块管理界面,相比之下 Sublime 需要自己手动安装,或是依赖第三方的 package control。Atom 的扩展也是用 JS 或者 Coffee 在 Node + webkit 的环境下开发,并且可以使用 npm 的包,这对于前端和 Node 开发者是很有诱惑力的,需要的话完全可以把 Atom 打造成一个 IDE。


一个明显的缺点是,启动和开文件速度明显不如 Sublime 3。

GitHub 创始人 Mojombo 在论坛上说 Atom 正式发布以后是要收费的,内核将会是以限制性的协议开源,可以看了学习,但是不能拿来商用。其他所有官方模块都是 MIT 协议开源。从策略上来讲,GitHub 以后肯定会通过官方模块把 Atom 和 GitHub 进行深度整合。收费我估计不会贵到哪里去,说到底让开发者因为 Atom 而用 GitHub 用得爽,进一步加强用户黏度才是目的吧。这和 Google 做浏览器是一个道理。


---


补充一些技术实现上的细节:打开 Package Content 看了下,可以看到内部的由 CoffeeScript 编译过来的 JavaScript。内部的一些模块在 GitHub 上也能找到源码。核心的两个库,一个是界面库 Space Pen (github.com/atom/space-p ),自带创建 DOM 的 DSL,并继承自 jQuery 原型,可以看做加强版的 Backbone.View。另一个库是 Theorist ( github.com/atom/theoris ),一个基于事件的模型库,类似 Backbone.Model + Backbone.Collection。内部用了大量的 emitter 和 subscriber 模式。总的来说,代码很清晰,模块化做得非常好,非常值得做 SPA 的前端学习。

作者:韦易笑
链接:https://www.zhihu.com/question/22867204/answer/90728790
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

用过不少编辑器:UltraEdit / EditPlus / (G) Vim / GEdit / NotePad++ / TextMate / ProgrammerPad / Sublime 。确实是工作上用他们写过代码的。而 VSC / Emacs 只是体验了一下基本使用方法,算不上真用。用下来的结论是:Atom 比 Vim 更 Vim,比 Emacs 更 Emacs,同样,比 Sublime 更 Sublime。

Atom 唯一的槽点就是“卡”,不过那是去年的情况了,1.0后性能数次大提升,比起sublime/vsc之类虽不算流畅,但同时编辑20个数千行的文件没有压力。如今让人感觉慢的地方主要是启动loading(也大大短于eclipse, idea),使用时并没察觉它比其他编辑器慢再哪。而文本编辑器的快慢,更重要的是“让你工作更快更有效率”。下面说说为何 Atom比其他更有效率:

兼容VIM模式

这无疑团结了一大班 Vim过来的用户,Sublime虽然也有VIM模式,但是Sublime在 mac下面的vim模式有bug,我习惯用 hjkl来移动光标,sublime再mac下hjkl移动有问题,且我习惯CTRL_[来返回NORMAL,手指不离开主键盘区,而sublime的vim模式只支持ESC返回,加上其作者经常神秘消失,最稳定的2.x版本已三年没有更新,这些问题一直得不到修正。

由于Atom的定制程度直追 Vim/Emacs,它的vim模式能够使用插件来实现,而不像sublime必须builtin,Atom的VIM模式除了官方实现外还有很多用户实现,各有所长,你不喜欢可以换,Sublime就傻逼了,觉得builtin的不行,你就没办法了,而且作者不更新你也没办法。

Atom里的Vim模式并不是强制的,你可以用也可以不用,这样入门用户也不会觉得困难,但是如果你用惯Vim的话,使用Vim模式可以取得更好的效率,我觉得Vim/Atom-VimMode能够提升效率的地方有以下三方面:

1. 手指不离开主键盘区:
所有功能皆能在主键盘区完成,不用去按方向键,不用把手挪去按Home/End,更不用动鼠标。就像咏春中强调中线理论,认为一切动作围绕中轴线开展,守护自己中轴线的同时攻击别人的中轴线。Vim/Atom-VimMode中,双手不但从不离开主键盘,并且八根手指随时守护再HOME位(ASDF, JKL;)有动作就移动,然后马上归位。

2. 细粒度微操作:
星际/dota玩的好,微操基本功,微操又快又精确,Vim/Atom-VimMode一样,比如:
if (xxxx) {}
很多人编码时习惯“成对编码”,写了申请资源的代码,先把释放资源写了,写了左括号,先把右括号给补充完,当你写完第二行代码时,需要用到“再1-2行中间插入一行”,此时你的光标停留在第二行,传统编辑器你需要:按上箭头移动光标到第一行 -> 按END键去到第一行末尾 -> 按回车插入一行,mac下的END键还需要用CMD+右来组合出来,而Vim/Atom-VimMode中,你只需要shift+o即可,手指完全不离开主键盘区,不用像传统编辑器那样,右手先移动到箭头区又移动到HOME的小键盘区,再移动回主键盘区这么麻烦,类似还有:
使用o直接再下一行插入,避免 END/回车
使用I再行首插入,避免移动半天光标。
向前/后移动一个单词到单词头、尾。
快速更改当前单词,用/来快速搜索移动光标。
dd+p来快速移动代码块,取代shift+方向键半天。
shift-j 来两行合并成一行,代替 HOME, back 若干次。
。。。
你再编辑代码的时候,90%的情况可以直接一步完成,这就叫细粒度微操,而且整个过程手都不需要离开主键盘,不像传统编辑器那样,若干笨重的操作组合再一起,操作不够细步骤多的同时手还要再:主键盘区,方向键区,扩展键区 来回移动,效率奇低。而Vim/Atom-VimMode下,手指随时守护在home区(ASDF JKL;),所有微操都是围绕HOME区进行,不会移动到任何主键盘以外的区域,更别说用鼠标、触摸板。

3. 批量操作:
比如要给下面代码每行后面加一个分号:
var x = 1var y = 2var z = 3console.log('result is ' + (x + y + z).toString())
一般做法是:移动光标到行末->END->分号->移动光标到下一行,Vim里面不需要移动光标到行末,只需循环敲入:“A;<ESC>j” 即可,本来操作就少很多。这还不是最少操作,更少操作是利用Vim里面的句号“.”功能重复上一次操作,即第一行“A;”补充了一个分号后,第二行只需要按一下"."即可重复,于是最后操作变为:
第一行:A;<ESC>
后面所有行:J.

超级爽快的操作,这样的操作还很多,你还可以单条命令对一万行代码重复上述步骤,或者把c代码拷贝到go里面先一句话把所有分号给删除了。Vim下面的名言:绝不重复。

总之如果你熟悉 VIM模式,用 Atom能感到完全自由的方式,随心所欲的书写代码,而不是被书写这件事情费脑筋,解放大脑完全用于思考而不用于打字。但是同时对不习惯VIM的人照样友好,或者对想使用VIM的便利却又痛恨VIM这个软件的简陋的人带来了福音。










0 0
原创粉丝点击