查看原文
其他

放弃笨重的 IDE,转而尝试 Emacs

CSDN 2023-01-10

摘要: IDE 对于开发者而言,重要性不言而喻,但随着功能愈发强大,它们对硬件的要求也日益提高,甚至越好用的 IDE 就越笨重。

链接

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

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

者 | Paulo Renato de Athaydes
译者 | 弯月    责编 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

IDE(Integrated Development Environment,集成开发环境)是一种帮助程序员高效开发软件代码的工具,它通过多种方式协助我们,我几乎无法想象没有 IDE 要如何完成开发工作。

但是,IDE 提供的帮助并不是免费的。最近,我一直深受 IDE 的困扰。我的业余爱好项目使用的是一台 2019 年左右购买的 MacBook Air ,它的性能并不足以运行我最喜欢的 IDE Jetbrains 的 IntelliJ IDEA 社区版,所以这段体验不太愉快。

在这篇文章中,我想提出一个问题:IDE 真的有必要做的这么笨重吗?连几年前价值一千美元的电脑都不能运行 IDE?

问题

IntelliJ 是一款很棒的产品,我从未考虑过换成任何其他产品,所以我优先考虑的是换一部顶配的笔记本电脑和最好的工具。我的开发设备是顶配的 Mac M1,它还配备了 64GB 内存和 10 个 CPU 核心,所以在上面运行 IDE 毫无压力。

但当我在家开发业余爱好项目时,我使用的笔记本电脑就相对较弱了。于是,问题出现了:在使用 IntelliJ 编写代码和运行测试仅一个小时后,我的电脑就变得滚烫,风扇的声音越来越大,十分刺耳。

在 IDE 建立“索引”期间,它需要扫描所有需要索引的内容,在这段时间(大约一分钟左右)内,我几乎无法使用任何 IDE 的功能。

我还有一台 Dell XPS 13,运行的是 Linux,配置很不错,但情况依然如此,风扇的声音还更大。

平时,我可以观看高清视频、听音乐、浏览网页等等,就是无法运行 IDE,可是只能在顶配的计算机上编写代码,这个要求未免也太高了。

这个问题似乎与我使用的语言和技术栈无关。例如,我在使用 Java、Groovy 和 Dart 时或多或少都遇到过这个问题。此外, 我还注意到,在同时使用 Kotlin 和 Java 的项目中,情况更糟。

因此,我可以肯定,这个问题似乎与特定的语言或插件无关。虽然我是 JetBrains 及其工具的粉丝,但我不得不说 IntelliJ 实在太笨重了,甚至无法在 2020 年初购买的笔记本电脑上正常运行。

最近,我一直在向 Jetbrains 报告问题,最后一次他们告诉我关闭一些插件,因为通常一些糟糕的插件会引发问题。他们说得没错,因为最近我禁用了一些平时不怎么使用的插件(WASM、Scala、Makefile、Clojure-Kit、JMH、Gradianto),情况有所缓和,但问题依然没有得到解决。

IntelliJ 替代品

Jetbrains 正在开发 Fleet,这是一款更新、更轻量级的编辑器,虽然目前看来还不错,但在我的笔记本电脑上还是感觉很笨重,毕竟它与 IntelliJ 使用的是同一个后端。我有可能会试试看,但目前这款 IDE 仍然存在一些非常严重的问题(毕竟还处于测试阶段),只向高级用户开放。

大约十年前,我使用过 Eclipse,感觉这是一款很不错的 IDE,但不幸的是,如今它也变了,根据我最近的尝试,这款 IDE 对用户非常不友好。我不会再考虑使用它,它对大多数非 JVM 语言的支持、特别是对新语言的支持不太好,因此已经失宠很长一段时间了(Eclipse 曾是有商业头脑的语言设计师的首选 IDE)。

至于 Vim,很不幸,我从未想过尝试这款工具。我知道有几个基于 Vim 的 IDE,比如 neovim,都很有吸引力。但我偶然间发现,在编辑器的选择上,我会坚定地站在 Emacs 这一边。也许,有一天,我会改变主意,但短期内还没有任何迹象。

许多人可能想问:为什么不使用 VS Code?其实,我已经尝试安装了,但我还是不太喜欢这款 IDE。在我看来,这款 IDE 的快捷方式并不符合我的习惯,而且它基于 Electron,相对也很笨重。我承认 VS Code 看起来不错,我也知道它是当今最受欢迎的编辑器,但不适合我。

Emacs

鉴于如上种种原因,最终我选择使用 Emacs。

这是一款历史悠久的文本编辑器,与 Vim 并驾齐驱,甚至比我还年长,但它还在不断发展。它是 GNU 目的部分,可以说是早期自由软件和开源软件最成功的案例之一。

与我尝试过的其他 IDE 相比,Emacs 非常轻巧,有趣的是,创建之初它被当成了重量级 IDE。随着最近的一些发展为大多数编辑器带来了高级 IDE 功能,如今 Emacs 已成为一款非常强大的 IDE。

对于从未尝试过 Emacs 的新手来说,刚开始使用的时候确实需要花费一番心思,现代编辑器大多需要手动配置,否则就只能忍受内置的功能。此外,你还需要了解一点 Lisp(Emacs 构建使用了自己的 Lisp 语言,名叫 elisp),但如何你喜欢深入研究并破解 Emacs,那肯定也能成为一种乐趣。

Emacs 有许多开箱即用的发行版,如 Spacemacs 和 Doom Emacs,对于那些想要现代编辑器、但不喜欢手动配置的人来说,选用这些版本感觉更舒服。

几年来,我根据上个世纪 90 年代后期大多数应用程序都可以使用的基本快捷方式配置了 Emacs,比如 Cmd+S 表示保存,Ctrl+Tab 表示切换缓冲区等。此外,我喜欢使用的所有语言(Java、Go、C、Rust、Dart、Groovy、Common Lisp 以及 Zig)也得到了很好的支持,包括自动补齐、内联文档、代码导航(跳转到定义、查找实现、返回/返回上一个/下一个,等等)、在项目范围内的查找文件/类型/符号、一键式测试运行器,以及许多其他的 IDE 基本功能。

不过,经过精心设置之后的 Emacs 依然与开箱即用的 IntelliJ 有很大差距。

举个例子,在 IntelliJ 中配置 Java 的版本很简单,不仅包括编译器,还包括Java 标准的 API 版本(因为 Java 现在发展非常快,这很重要)。如果你使用的版本没有提供某个功能,它会发出警告,但在 Emacs 上就很难做到这一点,因为我使用的 lsp-java 需要通过 Eclipse 配置 Java 项目。

我需要修改代码的格式化程序,并被迫为了更改默认规则而下载 Eclipse,这对我来说非常痛苦。Emacs 默认会删除换行符,以满足每行最大宽度的限制,这会导致代码一团糟,我真的很想知道这个默认设置是谁的决定?

此外,Emacs 还缺乏 IntelliJ 的一些更重要、更高级的警告,比如在遇到逻辑上不可能的条件时,后者会很贴心地报告逻辑错误,还有一些不太常用的功能我都懒得去调查如何设置,比如自动修复警告(我真的很想念 IntelliJ 的 Alt+Enter)以及插入 System.out.println 和 public static void main 之类的自定义代码片段(尽管在 Emacs 中实现这些设置一点也不难,而且我已经设置好了)。

不过,Emacs 有一个令人惊叹的 Git 用户界面 Magit,这个界面感觉恰到好处,Org Mode 可以赋予文本文件神奇的力量,还有 elfeed 可以让你轻松阅读新闻(来自 RSS 提要、 HackerNews 和 Reddit),同时无需切换窗口。

Emacs 真的更轻巧吗?

为了回答这个问题,周末我一整天都在笔记本电脑上使用 IntelliJ 写代码,同时截取了电池的使用情况;第二天,我又使用 Emacs 做相同的工作(在同一个项目上做非常类似的事情),当然也截了图。

结果如下图所示

图:使用 Emacs 编程,请注意下午电池的使用量平滑地下降。

图:使用 IntelliJ 编程,早上电池的使用量很大,晚上我改用 Emacs 前,已经恢复到流畅的使用模式。

我并不是想说,通过上面这两张图我才知道 IntelliJ 真的很耗电。在这之前,每次使用 IntelliJ 编程,我就会感到电脑明显变得迟钝,尤其是在显示切换工作区的动画时,简直卡得一塌糊涂。

使用 Emacs 编程,电池只需充电一次就可以用一整天,而使用 IntelliJ 时,上午还没过半,我就得插上充电器。

然而,我的主要问题是噪音太大,因为风扇为了给 CPU 降温,一直嗡嗡地转个不停,而且键盘都烫手。总之,基本无法正常使用,至少在我小型笔记本电脑上使用 IntelliJ 写代码会感到非常不舒服。

最后的想法

事实上,Emacs 比任何现代 IDE 都轻巧得多,同时还提供了所有重要的功能,可谓小巧而不简陋。我希望 JetBrains 能听到用户的心声,并为此做点什么!

Emacs 很棒,但开发基本靠志愿者努力,因此很多东西感觉不太成熟,而且还没有文档,使用也不方便等等。但就目前而言,似乎 Emacs 才是我的最佳选择。

评论

评论 1:作为一名 Emacs 使用者,我不得不说 IntelliJ(以及任何现代 IDE)要比配置好的 Emacs(lsp-mode/eglot、corfu/company、tree-sitter等)方便得多,但代价就是需要消耗大量资源。

Emacs 本质上是单线程的,不适合进行异步操作。其大部分逻辑采用的是一种非常慢、JIT 不友好且只有非常初级的 GC 机制语言编写的。渲染流水线一团糟,内部的数据结构也非常初级。

话虽如此,Emacs 的通用性和可扩展性还是非常棒的,一切都在变化。相较于五年前,Emacs 已经改善了许多。也许再过十年,它也能在性能方面与现代 IDE 一较高低。

评论 2:我还在用 Sublime Text,尽管之前用过一段时间 VS Code。在我看来,除非你使用最新的硬件,否则“全能” IDE 都非常卡。就算源代码有 10 万行,打开也不应该花费几秒钟。对于我来说,Emacs 或 Vim 太底层了,所以我认为 Sublime 是简单性和复杂性的最佳平衡。

苹果一夜蒸发约4431亿元,市值濒临跌破2万亿大关;钉钉用户数突破6亿;Windows成2022年恶意软件主要攻击对象|极客头条
阿里宣布组织大变动:集团迎来首位 80 后 CTO、张勇亲自挂帅阿里云!
阴影之下,国产软件开发工具加快逆境突围

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存