Emacs和Vim这两个编辑器, 一个被称作神之编辑器,另一个被称为编辑器之神。 从两个编辑器发行到现在,一直都有编辑器之争, 虽然这种对编辑器的执着略显幼稚,更多的是Emacs和Vim粉丝们对hacker文化和自由软件社区的追求。

我是一个Vim爱好者,也很喜欢Emacs。 对这两个编辑器的喜欢除了它们能提供高效、自由定制的编程环境外,还有编辑器本身的设计哲学。在最近半年把Emacs当成IDE使用后,虽然学习过程中不断体会到Emacs的强大,但我自己也渐渐认为Emacs相比于现在的大多数IDE, 在工作中优势其实是有限的。也决定开始用VS Code来替代Emacs。

18年8月开始入Emacs的坑,从vim转到用Spacemacs最初的想法是Emacs能给我:1. 满足个人虚荣,可以装X。2. 写代码很爽,过程没有卡顿现象,比如说跳转很快,不需要配置;各个编程环境都适配。3. 所有的工作、时间管理等基本能在一个编辑器里完成,工作效率高。4.能学到elisp这门神奇的语言,能帮我解决问题。

先一句话总结半年来自己跳到这个坑里后的体验:很爽很痛苦。 之所以这么说,基于两点:1.最近开始用VS Code写代码,发现IDE在项目代码上体验非常好、很专业,Vim插件也能装上;而Spacemacs除了自己折腾编程语言环境,写代码时Runtime出错解决起来很麻烦,需要自己一步步定位自己编辑器哪里出了问题,折腾人。2. Emacs实际并没有给我带来预期的收益,也即没能多少提高我的效率。Emacs学习成本高,回报低。学习使用Emacs相当于重新学习一门新的技能(我学习能力不高),我需要知道如何配置好我的代码环境、如何管理插件、如何使用插件的快捷键,如何切换major mode和minor mode等等。很多事情确实可以在Emacs这个编辑器里直接完成:写代码、写方案、GTD、测试、记笔记,这让我有很“爽”的感觉,觉得自己很牛X,工作效率高。但其实这些事情都可以在更专业的软件里完成。记各种Spacemacs的快捷键这不是一项通用技能知识的、花大半天搞配置,很多时候做的是无用功。

vim-vs-emacs

现在 都已经9102年了,真的没很大的必要再折腾什么神之编辑器了,Emacs的学习曲线真的很迷,投入时间不成比例的,学久了会自我怀疑。一个编辑器是无法解决所有问题的(有个比喻忘了叫什么来的形容的,忘了)。目前的社会环境讲究的是效率,把更多时间花在折腾Emacs上倒不如花更多的时间在工作和生活上。

就像现在的算法解决的思路,能够用空间换时间为什么要用时间换空间呢?

再说说Emacs和Vim两者的设计哲学。

  • Vim是基于Unix的设计哲学,即如何做好一件事:文本编辑器就应该在文本处理上下足功夫,把灵活和强大发挥到极致,并在此之外做扩展。
  • 而Emacs追求的事高度集成的环境,想把所有的事情都包揽在一个环境里面直接完成,比如写代码,看图片,听音乐。它牛X的地方在于高度的一致性上。

现在的编辑器, 很多都有吸取Vim和Emacs的编程模式/习惯, 比如VS Code和Goland可以通过安装插件方式获得Vim的文本处理能力,以及Emacs的Ctrl的全局操作模式。这些IDE同时有自己的突出的优点:专业高效、开箱即用和用户体验好。

所以, 我放弃把Emacs继续做为工作IDE, 学习emacs中对我有意义的功能就足够了。

参考:

  1. Vim vs Emacs