逃离 IntelliJ:Emacs Eglot 实现 Scala 与 Kotlin 开发

Escape IntelliJ: Scala and Kotlin LSPs on Emacs Eglot

长期以来,JVM 语言开发者被灌输必须使用 IntelliJ IDEA 的观念,但这套臃肿的封闭生态往往占用大量内存且难以定制。我通过 Emacs 29 内置的 Eglot 客户端,结合 Scala 的 Metals 和 Kotlin 的 IntelliJ 语言服务器,构建了一套轻量级、高性能的开发环境。文章详细展示了如何通过 Emacs Lisp 自定义配置,解决 LSP 协议中的怪异行为,例如修复 Kotlin 自动补全的空文本 Bug 以及优化 Metals 的语义刷新闪烁问题。这不仅打破了“标准文本编辑器无法处理复杂 JVM 语言”的迷思,更让你重获对开发工具的完全控制权,体验真正无缝的编码流程。

Emacs 通过三项核心优势彻底颠覆了这一范式:LSP 的 Unix 哲学、无限的 Hack 能力以及统一的界面体验。
  1. sajithdilshan

    但这只是夸张之词。我每天都在 Mac 上使用 IntelliJ IDEA,同时打开多个项目,说实话,他们优化了很多东西让 IDE 更快了。我不是说它完美无缺,但它正在变得更好。而且它也不是闭源的。IDE 的核心是开源的(https://github.com/jetbrains/intellij-community),某些特定框架的支持(例如 Spring)则包含在 Ultimate 版本中。

  2. laszlojamf

    我同意 IntelliJ 是个资源吞噬怪兽,但我还没找到哪个编辑器的代码导航功能能跟它媲美。基本上这就是我如今使用它的全部原因,在 LLM 时代,我依然觉得这很值得。VSCode,尤其是针对 Golang,简直糟糕透顶。可能是我用法不对,但我真的试过,就是不够好。

    在 LLM 出现之前,当我还手动重构代码时,那些用 vim 或 vscode 的同事总让我来做大型重构,因为 IntelliJ 总是能搞定,而用其他编辑器则是看运气。

  3. DrProtic

    人们会绞尽脑汁去避免为一款 arguably 出色的产品付费,而这产品还来自一家很棒的公司,转头却毫不犹豫地花同样的钱在 Starbucks 买咖啡。

    我想我从未见过哪家公司像 JetBrains 这样被如此 scrutinized 和 nitpicked。

  4. marginalia_nu

    我们至今没有一个像样的 Java 语言服务器,这是我判断 LLM 总体上还无法真正交付(ship)的 Canary。对此类工具的需求毋庸置疑,但没人来填补这个空白。(jdtls 值得称赞它尝试了,但就是不够好)

  5. phmx

    Metals 的文档包含了将其与 Emacs 集成的说明。我照着做了,一切都能正常工作,包括 worksheets。

    https://scalameta.org/metals/docs/editors/emacs

  6. microflash

    作为一个 IntelliJ 及其系列 IDE 的重度用户,我得说它们比几年前臃肿太多了。我最近对 IDEA 最大的烦恼是磁盘同步极慢。如果我在 IDE 外部修改了文件,它在 IDE 里显示出来需要很久。

    他们应该削减二进制文件大小,发布一个不带所有捆绑插件的精简版本。他们应该改进在超大项目上的性能(包括内存和 IO)。

    虽然我个人的 Ultimate 订阅已经过期了,但我工作中依然在使用它,因为它的 debugger、codenav 和 autocompletion 依然是业界最佳。

  7. tecleandor

    我正试图避开 IntelliJ,因为我只需要用它来编辑 TeamCity 构建配置文件,这些文件是用基于 Kotlin 的 DSL [0] 编写的,而 autocomplete 和 linting 会非常有帮助。

    我试过 Eclipse 和 VS Code,但无法让它们正确进行自动补全或检测语法。有什么 LSP 能帮我解决这个问题吗?因为我对 Java、Kotlin 或 Gradle 一无所知,一切都让我很困惑……

    --

    0: https://www.jetbrains.com/help/teamcity/kotlin-dsl.html

  8. minraws

    我最近写了一个 Kotlin 和 Java 的 LSP,IntelliJ 中所有 LSP 相关的东西与 IDE 本身耦合得如此紧密,这真让人恼火。他们有一个外部的 LSP 项目,但进展非常缓慢甚至停滞不前,这很令人沮丧。

    注:我尝试过用 IntelliJ 构建它,性能远不如我预期的那么好,虽然比很多 LSP 要好,但依然如此。

    我知道很多人尝试过,但我认为只有 JetBrains 能做出一个好的 LSP,除非有人真的全力以赴,花几个月时间,在 JetBrains 工具链和生态系统之外重新构建解析和类型系统。

    Java 可能更容易,但现有解决方案的工作方式也相当 jank。

    但我喜欢这类项目,我并不反对 IntelliJ,它曾经很棒,在我学习时确实很棒。但我想要一个 LSP 来写脚本和做小修改,打开一个巨大的 IDE 对于我现在喜欢做的那些小改动来说,实在是大材小用。

同日更多故事

2026-07-23