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

2023-01-05 0 362

全文:  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 吗有必要性做的这么轻巧吗?连一两年前价值Ferrette的笔记本电脑都不能运转   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),情况有所缓和,但难题依然没有得到解决。

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

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

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

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

鉴于如上种种原因,最终我选择采用 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 工程项目。

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

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

为了回答这个难题,周末我一整天都在笔记型笔记本电脑上采用 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 是简单性和复杂性的最佳平衡。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务