前两天看到 “考虑退坑 Vim” 的帖,这么年的编辑器之争,不写个 “考虑退坑 Emacs” 的话好像 Emacs 赢了似的。
本人十年以上 Emacser ,曾经各种折腾 Emacs 配制文件,几乎所有的开发工作都在 Emacs 中完成,也曾自己写 elisp 插件。从一开始的把 Emacs 配成一个花里胡哨的 IDE 环境,到后来的大道至简,只保留一个全屏的主窗口;从一开始的想要在 Emacs 完成所有的事情,到后来的只用 org mode 和 magit ;最终,到了现在的想要弃坑。
如果将折腾 Emacs 做为一项业余爱好,其实 Emacs 还是有很多的可玩之处的。但毕竟大多时候我们需要的生产力工具,而在工作之余又有多少程序员想摸电脑呢,更别说 Emacs 了,(如果有,那对于编程开发一定是真爱,事实上我确实见过不少这样的极客,而用往往技术超群)。
而做为生产力工具,Emacs 会有以下问题
折腾配置往往会反客为主。用 Emacs 时间久了太容易遇到一个问题就想去折腾配置,这甚至有时会严重到影响正在做的事情。而且插件质量参差不齐,因为是开源自由软件,很多插件是基于兴趣爱好开发,作者并不为插件的使用负责,所以这常常会导至在使用一个插件遇到问题后又回去折腾配置。而作为生产力工具,我想集中精力的去搞生产,我希望可以做为生产力工具的用户,成为被工具服务的对象,甚至可以为此付费,而不是去反过来服务工具。
性能和易用性堪忧。易用性不说了,在桌面环境下现代化的交互毕竟是带来了更多的便利性,而且也更加美观,最重要的是减少了心智负担,而 Emacs 主打的按键绑定在现代化的 IDE 中配置下来也会有同样的效率,这样来看在桌面环境下 Emacs 并无优势。
对于性能方面,我曾三度尝试使用 Emacs 替代 XCode 开发环境(不得不说 XCode 是现代化 IDE 中少有的体验这么差的),但均以失败告终。第一次因为补全不给力放弃了。后来有了 lsp ,补全几乎达到了与 XCode 相当的效果,但发现 Emacs 只有单线程,大文件时打一字卡一下,又放弃了。最后一次有人开发了异步实现的补全插件,号称最快的补全插件,不卡顿,于是再一次尝试,发现使用了异步线程确实编辑不卡顿了,但补全出来的慢啊,只不过是将卡顿从主线程移到了异步线程,还是严重影响生产力,于是又一次放弃了。
很多 Emacser 会遇到这样的问题,因为使用 Emacs 需要大量按 ctrl 键,长期使用下来会导至小拇指痛,但这并不是我弃坑的理由,网上解决方案很多,换 ctrl 键位置,掌压法,用 space 键代替 ctrl 键等,我是交换了 ctrl 键和大小写切换键,同时用卷曲小拇指的方法按 ctrl 键,长期使用下来并无不适。
很多人离不开 Emacs 的原因可能就是因为一些王牌的插件了,到现在我仍在使用 Emacs 的原因就是 org mode 和 magit 了,这两个插件在 Emacs 中堪称是杀手级的,而且在其它编辑器中鲜有可以取替它们的功能。
但是因为我之前开发了移动端的 org mode 见 https://apps.apple.com/us/app/metanote-notes-docs-agenda/id6452550221 , 而且桌面版现代化的 org mode 编辑器 Metanote 也即将发布。
而对于 magit ,其实如果不在意资源占用的问题 IDEA 中的更好用。
于是,我发现当我不再需要在 Emacs 中使用 org mode 和 git 时,我再也找不到使用 Emacs 的理由了。
这又是另外一个大的话题,Emacs 是自由软件,自由软件的开发依赖于社区的力量,而为了能让更多人参于到自由软件的开发上,自由软件社区往往会有一种浓重的自由软件精神,甚至成为了宗教信仰,言必称自由,言必称开源,言必称贡献,有时你遇到个问题,提个意见,很多人就会反问,你贡献过代码吗?没贡献过就没资格提意见;或者你觉得有问题你为什么不自己修复并提 pr ?种种这一类的往往会压得我喘不过气来,而我只是一个牛马,尚在为生活奔波,何谈贡献,我只想有个好用的生产力工具而已,所以我宁可付费选择商业软件,而不想在这种自由软件精神的重压之下。
国内也有一个圈内非常有名气的 Emacs 社区,如果我这篇帖发在这那个社区,大概率会被很多 Emacs 的忠实用户所反对,而为了避免引起不必要的讨论,我已经不怎么在那个社区活跃了。
虽然说了这么多问题,但在服务器领域和嵌入式开法领域,即需要大量使用终端环境的场景下,Emacs 和 Vim 这样的编辑器仍是不可取替的,仅仅使用 tui 就实现了大部分现代化 IDE 的功能,还是非常有用的。
最后,再见了,我的 Emacs 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.