请教下现在emacs中开发java项目体验如何,像jdtls这种lsp server相较于IDEA这种ide的体验相差如何呢?
我用的是 eglot + eglot-java + dape 作为工具写 Java 的。说说体验。
- 补全。IDEA 的补全提示肯定比 Emacs 要快的,以及现在 IDEA 可以 AI 补全,类似 copilot,但也有人不喜欢这种。(哪怕 lsp-bridge 比不上 IDEA 自带的补全)
- debug。 体验也不如 IDEA,尤其是低版本的 JDK + spring 的话还是在 IDEA 当中更加舒服。springboot 的话用 dape 的话,可以相对舒服一些,但体验还是不如 IDEA。
- 编辑。 这个肯定是 Emacs 更加高效一些,全键盘操作不管你是用的 evil 还是 meow都会更加高效一些。(非模式编辑我没试过)
- 版本管理。 git 操作的话习惯了 magit 也可以更加高效一些,但是 IDEA 的 git 工具也挺好用的其实。
总得来说,可以用。(再次申明,低版本 JDK + spring 还是用 IDEA 吧)
2 个赞
windows下 eglot + jdtls + (手工 mvn gradle)
只用作最基础的代码编辑
优点:
- 补全/跳转 速度快(快捷键)
- 搜文本/文件非常快 (global rg等其他工具)
缺点:
- 需要独立开启终端
- 绝大部分需要人工参与(熟练了也就无所谓了)
说起来跳转,mapper.java 跳 mapper.xml 需要自己写个函数跳转。(很简单)
另外,xref 可以设置 (setq xref-auto-jump-to-first-xref 'move)
配合 popper,写个关闭 xref buffer 的函数,可以增加体验。不用 popper 的可以参考我以前自己写的一个函数。 .emacs.d/lisp/init-prog.el at main · LuciusChen/.emacs.d · GitHub
最后,用 eglot 的话默认的是 flymake 作为检查工具,如果不习惯一直弹出错误提示(idea 用户应该不会不习惯),可以设置 (setq flymake-no-changes-timeout nil)
,但是这样会有个问题,参见 https://github.com/joaotavora/eglot/issues/1296, hack 的方法也在这个 issue 里面。
1 个赞