针对从C/C++转换而来的人,提供带有VIM集成的Java IDE

3
我是一名有经验的C/C++程序员,现在开始学习Java,并且正在寻找一个好的IDE,希望它能够与VIM集成或者有一个VIM插件,让我可以使用相同的按键映射来进行编辑、cscope和omnicompletion功能。我的意思是,无论IDE提供了什么本地功能,都可以映射到相应的vim按键绑定上。它应该可以在Windows或Linux上运行。只要满足我的需求,我不介意为IDE和插件支付费用。
我在SO上看到的最近一个处理这种问题的问题已经过去一年了,我相信“技术水平”已经发生了变化。
我想听听那些实际使用这些IDE和VIM插件的人的经验。
6个回答

2

为什么不直接使用VIM呢?

你清楚它能做什么以及如何扩展它,而且它似乎正是你想要的。但是,你不会满足于任何模拟器,因为它们无法完全取代VIM,并且在你目前的心态下,你不喜欢学习新的编辑器。然而,这是我建议你做的事情。现代Java IDE可以做的事情远远超过VIM,因为它们深入了解你的源代码。如果您使用IDE的默认配置,您将从中受益最多,我不知道有哪个IDE想像vi/vim一样看起来。

话虽如此,你可能会发现http://ideavim.sourceforge.net/很有趣。 IDEA是唯一一个赚钱的常见Java IDE...


你是在反问“为什么不只是使用VIM?”这样的修辞手法,表示“只需使用VIM”?同时也说,“现代Java IDE所能做的事情远远超过VIM所能做的事情”,似乎暗示应该使用现代IDE。 - Sam
如果您对vim非常熟悉,并认为这种熟悉比IDE技巧更重要,那么只需使用vim作为编辑器(再加上一个ant构建)。个人而言,我在很久以前有意决定喜欢Eclipse并顺应潮流。这意味着我必须学会Eclipse编辑器的键绑定,但这并不是什么大问题。如果您需要更多功能,您总可以打开->系统编辑器或使用其中一个“在此处打开资源管理器”的插件来使用Eclipse。实用主义者最佳选择 :) - Thorbjørn Ravn Andersen
我仍然坚持认为,任何仿真都无法完全满足您的需求(vim非常强大,是的,我在Windows上使用它)。 - Thorbjørn Ravn Andersen

2

IntelliJ有一个VI插件。我从未使用过,因此无法评论其易用性,但IntelliJ本身非常出色。


你喜欢IntelliJ的哪些方面?相对于Netbeans或Eclipse等其他IDE,为什么你选择它呢? - Robert S. Barnes
抱歉回复晚了。 我喜欢IntelliJ的用户界面(我发现它比其他我尝试过的工具更直观,除了早期的Delphi和Turbo C++版本),以及性能(它比Eclipse或Netbeans快得多)。当然,像任何工具一样,需要适应一段时间,但他们的口号“愉悦地开发”并非夸大其词。 - jwenting

1

最近在工作中编写Java代码时,我一直在使用vrapper。它有一些小的可用性问题和一些缺失的功能(例如cit),但它似乎非常适合提供基本的vi编辑功能。

好吧,看起来我在阅读其他答案时有点误解了原始问题。我不太清楚您如何将Eclipse的本地omnicompletion功能轻松映射到相应的vim映射。然而,我认为通过vrapper提供的绑定和学习Eclipse中最重要的几个编码辅助键,您可以非常高效地工作。

甚至可能有一个关于此的Stackoverflow问题,但我发现最重要的快捷键是:

  • ctrl+space进行“omnicompletion”
  • ctrl+1打开建议的快速修复错误或警告菜单
  • shift+ctrl+t打开类型

1

我一直在使用Eclipse的viplugin插件(http://www.viplugin.com/viplugin/)

它非常好用,虽然在重构方面有些问题,但大多数主要的编辑命令都可以正常使用。对于复杂的正则表达式工作,我仍然需要使用vim,但这种情况每年只会发生两次左右。

不幸的是,它是商业软件(15欧元),而且开发似乎已经放缓了很多。目前看来,它比vrapper更具备功能完整性,但我还没有尝试过vrapper。


Eclipse是否内置代码补全和ctags功能?它们能否映射到相应的vim命令? - Robert S. Barnes
1
是的。它的代码补全比vim好得多 - 它理解更多的语义,因此它将使用标签完成泛型,并仅建议在上下文中有意义的变量。我仍然使用ctrl-space进行代码补全,但您可以重新映射它。我已经将ctrl-]映射到“跳转到定义”,所以它就像我的vim设置一样工作。 - mo-seph

0

0

我非常喜欢NetBeans的jVi插件。虽然我主要用它进行PHP开发,而不是Java。 - Eugene M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接