有道是“瓦罐不离井上破,将军难免阵上亡”。程序员如果没参与过“哪个编辑器世界第一”的争论,编程人生就能不算完整。Hacker News上隔三差五的编辑器新闻下面,总会跟着大量党同伐异的评论。如果想在贴吧上骗经验值,只要发个帖“xxx编辑器世界第一,不服来战!”如果不被管理员封号的话,要不了多久就能升到顶级。但我们还是理性一点——无偏见看编辑器——那是不可能的,能做的,只有尽可能客观一点,展示一下各家的特点,至于选哪个:丰俭由人嘛!
评价编辑器看哪些参数
首推便利性
如果编辑器不能给开发活动提升效率,还不如不用,用Windows自带的Notepad记事本也可以编辑代码文件嘛!除了没有语法高亮、自动缩进、自动补全错误检查、git集成、快捷键自定义、快速跳转、代码搜索......好了,刚说这几个这几个功能属于“必有”之列,要是能人有我优就更好了。
比如自动补全功能,编辑器最起码,要实现根据当前打开的项目文件里存在的字符串作为候选,比如有个名为ORDER_NUMBER的C语言宏定义,只要按ord这仨字母,后面的就应该能自动出现在输入候选里。
更高级的依据语义的补全:输入到“order.”这个.的时候,编辑器会先去查查order是什么类,再去源代码解析一下order类有哪些属性和方法,全部显示在候选列表里。这个功能依赖编译器和编辑器的集成,Java语言有天然的优势。比如IntelliJ IDEA,被广大Java从业人员称为神器、挤掉Eclipse被Google选为Android Studio的基础不是因为长得好看,那是真能实现传说中的语义补全。
当然侧重某一编程语言的IDE,肯定比通用编辑器在便利性上有更多优势,这点需要看用户是否要面对复杂的技术栈了。
快快快!
编辑器的速度主观感受主要有两处:冷启动和命令响应。
冷启动速度很好理解,比如Mac上的上一代神器TextMate,Objective C开发的Native应用,“秒开”就是形容它的打开速度。与之对应的是新贵Atom,本质上是一个webkit内核浏览器,编辑区是由Javascript控制的一个web页面。第一个版本打开的时候我还以为死机了......
当然作为使用频率特别低的冷启动,在不怎么关机的开发过程中可以忽略不计。命令响应速度就很重要了,比如最基本的用鼠标滚轮翻阅代码,稍有卡顿就会给程序员带来“人脑胜于电脑”的快感,但其实这是很影响开发者心情的感受。还有代码搜索,这点sublimeText做得就非常优秀,对比Eclipse,简直就是数据库有索引对没索引的区别!
扩展性
对于编辑器开发者来说,花上80%的时间去实现20%用户的奇葩需求(比如在编辑器里播放mp3)实在得不偿失,把编辑器的内部api开放出来给热爱折腾的用户自行定制,就成了双赢的选择。
上古时代的Emacs就已经做得天上有地下无,除了elisp作为编程语言有点小众之外,基本就是一个操作系统的模型。sublimeText使用python,Atom用javascript,都是用户基础好的编程语言,各种扩展和插件也如火如荼。
对比之下,微软去年才推出了真正意义上的通用编辑器Visual Studio Code,之前的所有产品都不支持api绑定层的扩展,这次直接由Eric Gamma领导开发,使用Typescript编写,在关键的逻辑比如代码高亮上采用C++提供Native的支持,看来是想后来居上啊!
还是得自己选
作为一个选项极大丰富的当代程序员,太多选择有时也是一种烦恼。说起我自己的选择,引用《多情剑客无情剑》里最狂拽酷炫屌炸天的一句台词:
“我的右手比左手更快,这就是我的秘密!”
——荆无命