【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

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

  • 2023-02-24
    北京
  • 本文字数:3949 字

    阅读完需:约 13 分钟

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

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

 

2023-02-24 07:005480

评论 1 条评论

发布
用户头像
Android开发不得不用JetBrains, 吃CPU大户。
2023-02-24 10:06 · 广东
回复
没有更多了
发现更多内容

【金九银十】,java程序设计精编教程第三版,Redis有几种数据类型

Java 程序员 后端

【面试必会】极客时间吾爱破解,和腾讯大牛的技术面谈

Java 程序员 后端

一文了解OOM及解决方案,尚硅谷java课程表,Java编程入门教材

Java 程序员 后端

【Spring注解驱动开发】java基础全套视频教程,被逼无奈开始狂啃底层技术

Java 程序员 后端

【大牛系列教学】,数据库系统原理及mysql应用教程第二版,面试心得体会

Java 程序员 后端

一个三非渣本的Java校招秋招之路,2021高级Java笔试总结

Java 程序员 后端

tomcat面试题,传智播客java就业班视频教程,Spring的XML解析原理

Java 程序员 后端

一个Java程序员的腾讯面试心得,这次被它搞惨了

Java 程序员 后端

【工作经验分享】kafka视频教程下载,Java开发者跳槽面试

Java 程序员 后端

一招教你看懂Netty!硅谷一至五季百度网盘,springmvc源码分析图

Java 程序员 后端

tomcat面试题汇总,java设计模式菜鸟教程,linux内核教程

Java 程序员 后端

“金三银四”春招指南!linux高级编程教程,和阿里大佬的技术面谈

Java 程序员 后端

【微信小程序】,java程序开发范例宝典百度云,Java零基础自学书籍

Java 程序员 后端

一条正确的Java职业生涯规划,毕业工作5年被裁

Java 程序员 后端

一条正确的Java职业生涯规划,浦发银行Java开发笔试题

Java 程序员 后端

spring源码视频教程,java尚学堂,Java项目视频

Java 程序员 后端

tomcat服务器面试题,java项目开发实训教程,Java编程教程视频下载

Java 程序员 后端

一眼就能看懂的Java自学手册,阿里巴巴Java编程笔试题

Java 程序员 后端

【Spring注解驱动开发】未来教育二级java激活码,Java基础项目实战

Java 程序员 后端

一年后斩获腾讯T3,headfirstjavapdf百度云,带你碾压面试官!

Java 程序员 后端

一年后斩获腾讯T3,一次违反常规的Java大厂面试经历

Java 程序员 后端

一个月成功收割腾讯、阿里、字节offer,springmvc面试题常问2020

Java 程序员 后端

一名毕业三年的女程序媛面试头条经验,Java项目视频百度

Java 程序员 后端

【工作感悟】牛客java面试宝典pdf,助你面试一臂之力

Java 程序员 后端

【干货,马士兵的java教程,这个JVM虚拟机内存模型你必须知道

Java 程序员 后端

【面试总结】尚硅谷2021百度云,Java技术基础知识总结

Java 程序员 后端

一个三非渣本的Java校招秋招之路,mysql使用教程,Java程序员全套

Java 程序员 后端

一文详解,java基础入门第二版课后答案黑马,Java校招面试

Java 程序员 后端

【一篇文章搞懂】,java程序设计案例教程许敏,费时6个月成功入职阿里

Java 程序员 后端

【大牛疯狂教学】,java教程网站免费,成功入职腾讯月薪45K

Java 程序员 后端

一次违反常规的Java大厂面试经历,2021Java网络编程总结篇

Java 程序员 后端

我的 IDE 太重了,所以迁到了 Emacs_语言 & 开发_Renato Athaydes_InfoQ精选文章