【问题标题】:Emacs java-mode: malabar, jdee, or eclim?Emacs java 模式:malabar、jdee 还是 eclim?
【发布时间】:2018-06-06 04:03:11
【问题描述】:

我想使用 emacs 进行 java 编码,但我对使用什么模式进行 java 编码感到困惑。有 jdee,看起来像 ide; malabar,据说他比 jdee 更精通 java 1.5 结构;和 emacs-eclim,它是 emacs 的 eclipse 后端。 emacs 也有大量的补全扩展,我也对使用哪一个感到困惑。事实上,我很困惑,以至于我推迟使用它们中的任何一个,直到我得到推荐。

目前在 emacs 中 java-mode + 补全的最佳选择是什么?而且,如果我决定使用上面提到的组合,会发生冲突吗?

【问题讨论】:

    标签: java emacs


    【解决方案1】:

    对于那些习惯了 Emacs 文本操作功能的人来说,Eclipse 看起来就像用一只脚踩着自行车。 http://www.mulgasoft.com/ 的 Emacs+ 插件非常适合将 Emacs 键绑定到 Eclipse。

    我经常使用 Eclipse 和 Emacs,但如果我只进行 Java 开发,我可能只使用 Eclipse 和 Emacs+。在 Emacs 上启用许多 Eclipse 功能需要一些工作。

    我的建议是使用 Emacs >= 23。如果您使用的是 Mac,请查看 AquaMacs。我使用 JDEE 作为 Java 插件。这有一个严重的缺点,即不能很好地使用泛型。不是它停止工作,而是很多东西没有被识别。不要使用旧的 2.3.5 JDEE 插件(大多数 Linux 发行版附带),而是从 sourceforge 站点获取 2.4 版本。同时获取Emacs Code Browser (ECB);这是一个插件,可以为您提供 Eclipse 的 Project Explorer 和 Outline 视图等内容(其他开发人员会看到这个并且在告诉他们它是 Emacs 时不相信您)。过去一年,我在 Windows、Mac 和 Linux 上将此设置用于商业项目。

    事实上,Eclipse 与 Emacs 配合得很好,我经常在两者之间切换。 Eclipse 有一些很好的重构工具,我曾经用 sed 来做这些工具,而且它有一个很好的调试器界面。您可以同时使用它们。我发现在处理其他人的代码时使用 Eclipse,而在编写自己的代码时使用 Emacs——Emacs 快得多。请注意,对我来说,Emacs 的很多价值在于非 Java 功能,例如从本地 Emacs 编辑远程服务器上的 Tomcat 配置文件,使用 LaTeX 编写专业文档,使用 Python 或 Bash 或 MATLAB 或 XML 进行开发,以及奇怪的文本操作任务(例如,将 CVS 文件转换为 String[] 数组)。

    你提到的另外两个项目我没有用过。已经可以将 Eclipse 编译器与 Emacs 一起使用,所以我不确定我是否看到了 emacs-eclim 项目的意义,反正它似乎已经垂死了。 Malabar 项目可能很有趣,但似乎是一个有点古怪的开发人员的产品(例如,warning“如果你不使用 Maven(为什么?)你不应该考虑 malabar-mode”---我'会告诉我的客户吗?)。

    Emacs 上的 Java 处于可悲的状态。我希望 JDEE 能够重振旗鼓,但尚不清楚何时或是否会发生。网站和邮件列表提供的线索很少。

    【讨论】:

    • 实际上,当与非 maven 项目一起使用时,malabar-mode 不起作用。如果没有适当的 POM 文件,即使它的代码完成功能也无法工作。这立即让我失望了。我曾尝试将 eclim 与 vim 一起使用,它确实将 Eclipse 的一些最佳功能带入了 vim,尤其是代码完成。但是,我试图避免在 emacs 中使用 eclim,因为我只将它主要用于代码完成,而且我认为 emacs 可以处理这种完成。我仍然不知道如何。
    • Emacs 有两个我知道的文本完成命令。第一个 dabbrev-expand (M-/) 和一个实际上称为“hippie-expand”的。 JDEE 可以像 Eclipse 一样完成代码完成,例如,为您提供当前可以调用的方法 (C-v-.)。
    【解决方案2】:

    我使用带有自动完成模式支持和 java 模式突出显示的 emacs-eclim 专门用于 Java 编程。我 90% 的工作是在 emacs 中完成的,但是当我需要调试、运行单元测试或进行重大重构时,我会切换到 eclipse。总而言之,这个设置对我来说效果很好。

    我已经很多年没有尝试过 JDEE,但我记得设置它是个坏蛋。我不太关心用户界面,因为它放置了许多预先安排好的窗口,这些窗口被锁定在适当的位置。我喜欢能够在编辑缓冲区之间来回切换,通常只显示一个窗口,但在必要时会即时拆分和重新排列。

    注意:我是一个 emacs-eclim 维护者,这可能影响了我的判断。

    【讨论】:

    • 我可以在这里体验一下 fred-o 的经验。我从未设法设置 JDEE,但 eclim 对我来说太棒了。
    【解决方案3】:

    如果您使用的是 Maven,那么我建议您使用 malabar-mode。它会自动为您设置好一切,无需像使用 JDEE 那样编辑项目文件。我发现 malabar 的缺点是,如果您打开了很多多级模块项目,它会消耗大量内存。

    Malabar 和 JDEE 都会为您提供“真正的”补全,即只有可能的补全。然而,Emacs 中有两个令人惊叹的“智能猜测补全框架”。嬉皮扩展和自动完成。

    前者很棒(可以为您完成整个代码块,从而可以循环通过您项目中的所有 if 测试),但auto-complete mode 更好。它会给你一个很好的智能风格菜单,在你使用它时会“学习”,并允许你定义一个包含你希望以各种语言提供的补全的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多