Redian新闻
>
我的 IDE 太重了,所以迁到了 Emacs

我的 IDE 太重了,所以迁到了 Emacs

公众号新闻

作者 | Renato Athaydes
译者 | Sambodhi
策划 | 褚杏娟

IDE(Integrated Development Environment,集成开发环境)是一种伟大的工具,可以使开发者的生活更轻松。我简直不敢想象,没有它们的工作会是什么样子。

但是,它们为我们提供的帮助并非无偿,而我也正遭受着这种后果。我使用 2019 年左右生产的、性能不佳的 MacBook Air ,在它上面运行我最喜欢的 IDE、Jetbrains 的 IntelliJ IDEA 社区版,但整个经历一直都不怎么愉快。

在这篇文章中,我想提出一个问题:IDE 是否真的需要这么重,以致于我们在数年前价值一千美元的笔记本电脑上几乎无法使用 IDE?

我遇到的问题

使用 IntelliJ 2022.3 的截图

IntelliJ 是一款非常出色的产品,对于专业开发来说,我根本不会考虑换成其他东西。因此,在这种情况下,拥有最好的笔记本电脑和最好的工具应该是优先考虑的。在我这台拥有 64GB 内存和 10 个 CPU 内核的顶配 Mac M1 上,一切都感觉轻盈流畅(好吧,几乎一切……但在上面运行带有几个 Docker 容器的 Kubernetes,Mac M1 居然有点跑不动了!),所以我在工作中没有任何问题。

但当我在家里想做一个业余爱好项目时,为了不让工作与私人事务混在一起,我试图将它们严格分开,我宁愿选择我家那台性能较弱的笔记本电脑。

问题在于,仅仅在使用 IntelliJ 编写代码和运行测试一个小时左右之后,这台笔记本电脑就变得非常烫手了。风扇的噪音越来越大,最后实在让人讨厌了。

这还不算,当你几乎无法使用任何 IDE 功能的情况下对内容进行“索引”时,这个过程要花上整整一分钟,甚至更长的时间……而且那是在花费了相当长的时间之后,仅仅扫描要索引的东西!

我还有一台戴尔 XPS 13,运行的是 Linux,配置相当不错,但情况也是一样,而且风扇的噪音更大。

我可以毫无问题地看高清视频、听歌、上网冲浪和许多其他事情……但显然,在不是顶配的任何机器上编写代码,要求都太高了。

问题的出现和我所用的语言堆栈没有任何关系。例如,我在 Java、Groovy 和 Dart(这些是我最近写得最多的编程语言)中遇到了或多或少相同的问题。我还注意到,在我使用 Kotlin 和 Java 的项目中,情况明显更糟。因此,问题看起来跟某种特定的语言或者插件没有关系。

尽管这样说有点伤人,但作为 JetBrains 及其工具的忠实拥趸,IntelliJ 似乎已经变得过重,无法在 2020 年初的笔记本电脑上正常运行,而这台笔记本电脑又不是很高端的产品。

我最近一直在向 Jetbrains 报告问题,在最后一次他们告诉我关闭一些插件,因为通常会有一个流氓插件导致问题……从某种意义上来说,这是对的,因为我已经禁用了我不太在意的插件(WASM、Scala、Makefile、Clojure-Kit、JMH、Gradianto),这个问题的确没有那么明显了……但它肯定还是存在的。

IntelliJ 替代方案

Jetbrains 正在开发 Fleet,这是 JetBrains 的一个新的、更轻的编辑器,虽然它看起来很有前途(它非常美观,考虑周全,非常时尚),但在我的笔记本电脑上仍然感觉不够轻……它毕竟使用了与 IntelliJ 相同的后端,这也许就是问题所在(不过这也是一个很大的优势,因为 IntelliJ 的大部分出色的功能也存在于 Fleet 中)……

我可能最终会转向它,但鉴于它仍然存在一些相当严重的问题(这很自然,目前还处于测试阶段),所以估计它还需要一段时间才能准备好投入使用。

当我在十年前使用 Eclipse 的时候,它是一个不错的 IDE,但不幸的是,它变得(我最近确实试了一下!)对用户相当不友好。我不想冒犯任何喜爱它的人,但现在我不会考虑重新使用这个工具了。更不用说,它对大多数非 JVM 语言,特别是较新语言的支持非常差,因为它已经失宠了相当长的一段时间(它曾一度是有商业头脑的语言设计者的首选 IDE)。

很遗憾,对我来说,Vim 是一个我从未想过要使用的工具。我知道有几个基于 VIM 的、新颖有趣的 IDE 项目,比如 neovim,考虑到其广泛的应用,这使它成为一个有吸引力的选择。但我偶然发现自己在旧编辑器之战中坚定地站在 Emacs 一边,正如我们将看到的那样。我想,有一天,我可能会跳到另一边去看看,但那一天并不会很快到来。

可能有人会问:为什么不是 VS Code?好吧,我实际上已经安装了它,但我不能让自己使用它。在我看来,它的快捷键并不符合人体工学(而且我也懒得去定制它,因为接下来的原因),它仍然很重,基于 Electron,而且和其他的替代方案比起来,在使用我关心的语言时,我觉得它很慢。我承认 VS Code 看起来不错,也知道它是当今最流行的编辑器,但它就是不适合我。如果你觉得它足够好,那也可以了……但我肯定需要别的东西。

Emacs 来拯救?!

这就是为什么我目前正尝试重新使用 Emacs。

可能你不了解 Emacs,这是一款与 Vim 一样具有传奇色彩的文本编辑器,但是它所能做的事情要多得多。它存在的时间很可能比你活着的时间还长(当然比我还长),而且仍在继续发展!

它是 GNU 项目的一部分,可以说是早期自由和开源软件的最成功的例子之一。

与我尝试过的其他软件相比,Emacs 是非常轻量的(有趣的是,在它刚创建出来的时候,它被认为是一个重量级的软件……事情发生了怎样的变化)!最近一些开发给大多数编辑器带来了先进的 IDE 功能(当然,我说的是 LSP),今天,Emacs 是一个功能非常强大的 IDE。

它确实需要任何从未尝试过的人进行初始投资,因为你从一个现代编辑器中期待的大多数东西要么必须手动配置、要么内置,但以完全不同的方式工作。你还需要对 Lisp 有一点了解(Emacs 是基于它自己的 Lisp 方言 elisp 构建的),但如果你是那种甚至考虑像 Emacs 这样的东西可以彻底破解的人,这实际上也是乐趣的一部分。

我注意到,有更多“开箱即用”的 Emacs 发行版,如 Spacemacs 和 Doom Emacs,对于那些想要一个现代编辑器而不必手动配置一切的人来说,会感觉更舒服。

几年来,我已经成功地将 Emacs 配置为最基本的现代快捷键,这些快捷键在 90 年代后的大多数其他应用程序中都能使用(比如 Cmd+S 保存,Ctrl+Tab 切换缓冲区等等)。而且对我喜欢使用的所有语言(Java、Go、C、Rust、Dart、Groovy、Common Lisp 甚至 Zig)都有很好的支持,包括自动完成、内联文档、代码导航(转到定义、查找实现、返回 / 前进到上一个 / 下一个位置等)、项目范围内查找文件 / 类型 / 符号、一键测试运行器以及其他许多我认为是 IDE 基本功能的东西。

不过,我的 Emacs 设置(请随意取用其中的一些片段),仍不太符合我在 IntelliJ 中得到的开箱即用的效果。

例如,在 IntelliJ 中,配置想使用的 Java 版本是很容易的,不仅包括编译器,还包括你想坚持使用的 Java 标准 API 版本(因为现在 Java 发展很快,这一点很重要),如果你要使用的特性在你使用的版本上不可用,它会警告你,这点非常好。但在 Emacs 上,这样做就很有问题,因为按照我使用 lsp-java 的方式,配置 Java 项目需要通过 Eclipse 完成!

当我试图改变代码格式,并被迫下载 Eclipse 来改变它的默认规则时,我才痛苦地意识到这一点(它会强制删除换行符,让行填满所配置的整个最大宽度,把代码弄得一团糟——我真想知道,谁他妈会认为这是一个好的默认做法!)。

Emacs 还忽略了 IntelliJ 会给出的其他一些重要的、更高级的警告。比如当你检查一个在逻辑上不可能的条件时,它会发现那些令人震惊的逻辑错误……还有一些平凡的功能,我还没有费心去发现如何实现,比如自动修复警告(我真的很怀念 IntelliJ 的 Alt+Enter)和为诸如 System.out.println 和 public static void main 插入自定义代码片段(尽管在 Emacs 中这样做一点也不难,我最终会做到的!)。

另一方面,Emacs 有 Magit,这是一个令人惊叹的 Git 用户界面,感觉很棒。Org Mode 给文本文件带来了神奇的力量,甚至还有像 elfeed 这样的东西,它可以让你不离开编辑器就可以阅读你最喜欢的新闻(来自 RSS feed 和类似 HackerNews 和 Reddit 的东西)!

但 Emacs 真的更轻吗?

为了回答 Emacs 是否真的更轻的问题,我实际上在一个星期六的 24 小时内截图了我的笔记本电脑的电池使用情况,当时我花了一天的大部分时间在 IntelliJ 编码,然后第二天做了同样的事情,但是使用 Emacs (在同一个项目中工作,做非常类似的事情)。

尽管周日我花在编程上的时间比较少,但我认为这些图片让事情变得非常明显。

使用 Emacs 的情况,请注意,在一个美好的下午编码过程中,电池曲线出现了平滑的向下倾斜。

在早上使用 IntelliJ 的情况,你可以看到充满电后,电量被“凶猛吞噬”,在我晚上回到 Emacs 之前,电量就恢复了正常的使用模式。

并不是说我需要这个才知道 IntelliJ 真的非常耗电!我之所以知道是因为笔记本电脑总是在我使用它的时候明显变慢了。像工作区切换动画这样的体验变得极其糟糕。

虽然你可以在上面的截图看到,我充一次电就几乎可以在 Emacs 上呆上一整天,但使用 IntelliJ 我只花了半个上午就不得不插上充电器。

然而,我在意的主要问题是,风扇的声音太大,这虽然试图让 CPU 保持凉爽,但键盘变得太热,触摸起来很不舒服。这些因素加在一起,让我几乎不可能继续在我的小笔记本电脑上使用 IntelliJ,或者至少让我感到真的很不舒服。

最后的感想

很长一段时间以来,我一直想写一篇关于这个问题的文章。恐怕结果可能不是很有启发性。但我仍然认为我上面说的话需要说出来。

Emacs 比任何现代 IDE 都轻得多,同时仍然具有所有重要的特性。我希望 JetBrains 能听到我的心声,并把它放在心上、为此做点什么!也许,Fleet 就是解决办法?!

Emacs 很棒,但它基本上是用爱发电的志愿者在为其努力,因此很多东西感觉真的很不成熟,比如没有文档、难以使用等等。这很大程度上表明,只有一家大公司(或少数公司)支持一个产品时,用户才能真正得到一个完美的东西。但就目前而言,它似乎是我除专业用途外的最佳选择。我真的很高兴它的存在。

原文链接:

https://renato.athaydes.com/posts/switching-from-heavyweight-ides-to-emacs.html

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

没有 NGINX 和 OpenResty 的未来:Cloudflare 工程师正花费大量时间用 Rust 重构现有功能

开源意味着不问责,我们准备好应对比 Log4Shell 更大的安全危机了吗?|Log4j 一周年特别报道

阿里过去一年裁员达19000人;字节跳动布局中国版 ChatGPT;马斯克称下周将开源推特算法代码 | Q资讯

技术裁员正在助长新的创业潮:本来犹豫要不要创业,没想到公司替我做了决定

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
谷歌Bard首秀翻车,所以到底是谁拍摄了人类首张系外行星照片?每日原则:记住,你不可能擅长所有的事情,即便如此,也不可能有时间去做所有的事情,所以你必须与其他人合作突然失联!上海一高管向66名同事借了1300多万,被害人:他是我领导,所以没拒绝OceanBase公众号文章:客户觉得OceanBase比TiDB牛,所以选了我们因为信任,所以托付——上海信托2023年全新品牌形象片上线爱你,所以带链接终于有个说实话的专家:中国老百姓的负担太重了!热爱,所以进步:波士顿中国音乐家协会合唱团第三届 冇(Mǎo)国际青年影像周 开始征片啦!本来以为她软弱可欺,所以退婚,兽王没想到她就是个勾人的妖孽!上个月卖爆的小度健身镜,大家反馈很实用很超值,所以今天咱们继续薅羊毛!“AQA更简单,爱德思更多学习资源,所以Alevel数学应该选哪个考试局?”香奈儿新logo,味道太重了!怕爸爸可乐喝多了对身体不好,所以…颜纯鈎: 细颈瓶才是中国人痛苦的罪魁祸首我是真的很爱,所以要再说一下闲话人生(223)深切怀念我亲爱的二姐英语语法大汇总,太重要了,不看太遗憾!我觉得很有必要跟你强调这几点,所以专门写了发出来。谭木匠:因为淋过雨,所以更想为别人撑起一把伞唱 三 歌日本人偶馆专访二:人偶里必然寄宿着死,所以人们才会被吸引光速中国:科技投资是花无百日红,所以要在正确的时间做正确的事芽孢杆菌,开水都杀不死的怪物,所以隔夜水不能喝2022年去世的15位老海归因为中国人太卷了,所以被大规模封号了!!!人脑缓存太低,所以你家孩子绝不能死记硬背,因为肯定记不住LeCun:ChatGPT是「外星人」,所以才会胡说八道因为他们爱你,所以他们也会爱它因为自己淋过雨,所以总想给别人撑把伞|2023Fall埃默里翠鹿故事考研失利,所以想申皇艺?!LSE Offer+1!来自Mathematics with Economics专业!都憋大招呢,所以,本周无新片……【流感周报】不同地区趋势迥异,所以做了每个省市两年的流感曲线图邓小平三起三落如何玩弄华国锋
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。