我想将emacs用于java编码,但我对用于java编码的模式感到困惑。有jdee,看起来像ide; malabar,据说比jdee更精通java 1.5构造;和emacs-eclim,这是emacs的eclipse后端。 emacs还有大量的完成扩展,我也对使用哪一个感到困惑。事实上,我很困惑,我推迟使用其中任何一个,直到我得到推荐。
目前emacs中java模式+完成的最佳选择是什么?而且,如果我决定使用上面提到的组合,会发生冲突吗?
答案 0 :(得分:17)
对于那些习惯于使用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,它有一个很好的调试器接口。您可以同时使用它们。当我编写自己的代码时,我发现在使用其他人的代码和Emacs时使用Eclipse --- Emacs要快得多。请注意,对我来说,Emacs的很多价值都是非Java功能,比如从我的本地Emacs编辑远程服务器上的Tomcat配置文件,用LaTeX编写专业文档,用Python或Bash或MATLAB或XML开发,以及奇数文本操作任务(例如,将CVS文件转换为String []数组)。
我没有使用你提到的其他两个项目。可以将Eclipse编译器与Emacs一起使用,所以我不确定我是否看到了emacs-eclim项目的重点,无论如何这似乎都是奄奄一息。马拉巴尔项目可能很有趣,但似乎是一个有点胡思乱想的开发人员的产物(例如warning“如果你不使用Maven(为什么?)你不应该考虑malabar模式”---我会告诉我的客户吗?)。
Emacs上的Java处于悲伤状态。我希望JDEE能够重新焕发活力,但目前还不清楚何时或是否会发生这种情况。网站和邮件列表提供的线索很少。
答案 1 :(得分:14)
我将emacs-eclim与自动完成模式支持和java模式突出显示专门用于Java编程。我的90%的工作是在emacs中完成的,但是当我需要调试,运行单元测试或进行重大重构时,我会切换到eclipse。总而言之,这个设置对我来说非常有用。
我多年没有尝试过JDEE,但我记得这是一个很好的设置。我不太关心用户界面,因为它放置了许多被锁定到位的预先安排的窗口。我喜欢能够在编辑缓冲区之间来回切换,通常只显示一个窗口,但在必要时动态分割和重新排列。
注意:我是一名emacs-eclim维护者,这可能会影响我的判断力。
答案 2 :(得分:7)
如果您正在使用Maven,那么我建议使用malabar-mode。它将自动为您设置所有内容,无需编辑项目文件,就像您必须使用JDEE一样。我在malabar中发现的缺点是,如果你打开了很多多级模块项目,它会占用大量内存。
马拉巴尔和JDEE都会给你“真正的”完成,即只有可能的完成。但是,Emacs中有两个令人惊叹的“智能猜测完成框架”。嬉皮 - 扩展和自动完成。
前者非常棒(可以为您完成整个代码块,可以循环完成项目中的所有if-tests),但auto-complete mode更好。它会为您提供一个很好的智能风格菜单,在您使用它时会“学习”,并允许您定义一个文件,其中包含您希望以各种语言提供的完成。