使用Vim作为Java IDE的技巧?

我沉迷于Vim,它现在实际上是我编辑文本文件的方式。

因为它主要是一个文本编辑器,而不是一个IDE,有没有人能给我一些技巧,让我在开发Java应用程序时更容易一些?

我有几个问题:

  • 如何在不离开vi的情况下调用maven任务?
  • 我能完成代码吗?
  • 语法高亮显示如何?

还有什么(除了“不要这样做!”)我应该知道的吗?

160646 次浏览

使用vim。^-^(确切地说是gVim)

你将拥有一切(包括一些插件)。

顺便说一句,snippetsEmu是一个很好的工具,用于编写有用的代码片段(比如在TextMate中)。您可以使用(或修改)预先制作的包,也可以自己制作。

一些建议:

  • 确保使用vim(改进的vi)。Linux和某些版本的UNIX符号链接vi到vim。
  • 你可以使用eclim完成代码
  • 或者你可以在Eclipse中使用viPlugin来获得vi功能
  • vim的语法高亮显示功能很棒
  • Vim很好地支持编写小宏,比如运行ant/maven构建

玩得开心:-)

  • < p > 如何在不离开vi的情况下调用maven任务?

    Maven与其他shell命令没有什么不同:

    :!mvn

    你可以:set makeprg=mvn,如果你已经有了:make的最喜欢的键映射

  • < p > 我能完成代码吗?

    是的,eclim很棒,它是vim的编辑效率和Eclipse的Java语言特定意识之间的桥梁。

    <C-n><C-p>不是很好,但是非常有用

  • 语法突出显示如何?

你可能想要考虑其他vim+java目的的工具,比如代码模板(snippetEmu—默认代码段很糟糕,但可定制性很出色),搜索用法和转到声明(eclim, grep, ctags),生成getter和setter (java_getset或eclim),自动导入(eclim)。您可能还需要一个java shell来进行快速实验(BeanShell,也就是bsh)。

我已经使用Vim很多年了。我开始发现自己偶尔会启动Eclipse(使用vi插件,我不得不说,它有各种各样的问题)。主要原因是Java构建需要相当长的时间……而且,随着高度组件化的构建框架(如maven)的加入,它们变得越来越慢。因此,验证更改往往需要相当长的时间,对我来说,这似乎经常导致堆积了一堆稍后必须解决的编译问题,并且过滤提交消息也需要一段时间。

当我的编译问题队列太大时,我启动Eclipse。它让我可以轻松地完成更改。它很慢,使用起来很残酷,而且不像Vim那样是一个很好的编辑器(我已经使用Vim将近十年了,所以它对我来说是第二天性)。我发现,为了精确编辑,需要修复一个特定的错误,需要重构一些特定的逻辑,或者其他事情……我在Eclipse中无法像在Vim中那样高效地编辑。

还有一个建议:

:set path=**
:chdir your/project/root

这使得类名上的^wf成为导航大型项目的一个非常好的特性。

总之,最简单的是,当我需要添加大量新代码时,Vim似乎会使我变慢,这仅仅是因为花了大量时间来处理编译问题和类似的事情。但是,当我需要查找和编辑特定的源代码时,Eclipse就像一把大锤。我还在等待Vim的神奇IDE。据我所知,有三次主要的尝试。有一个纯viml ide类型的插件,它添加了很多功能,但似乎不可能使用。还有血肿,我有很多问题。有一个Eclipse插件实际上嵌入了Vim。对于真正的Java EE工作,最后一种方法似乎最有希望,但它似乎工作得不太好,也不能真正将Eclipse的所有特性与嵌入式Vim集成在一起。

在处理大型Java项目时,像添加一个缺少输入的按键,突出显示有输入问题的代码等,在IDE中似乎是非常宝贵的。

我发现以下总结非常有用:http://www.techrepublic.com/article/configure-vi-for-java-application-development/5054618。make的描述是针对ant的,不是针对maven的,但在其他方面是一个很好的总结。

我刚刚上传了用于Java Maven项目开发的这个Vim插件

如果你还没有设置高亮,不要忘记设置高亮:

enter image description here https://github.com/sentientmachine/erics_vim_syntax_and_color_highlighting < / p >

我知道这是几年以后的事了,但这里有一些有趣的插件。这两种我都没试过,所以是YMMV。

https://github.com/mikelue/vim-maven-plugin

https://github.com/vim-scripts/maven-ide

编辑:哦,顺便说一句,我试过eclim断断续续,但我喜欢vim的原因是它的轻盈。即使是在无头模式下执行eclipse对我来说也是一种精神上的提升。

EDIT2:我最近一直在使用playframework,这可能也适用于maven构建:

  • 对于编译,你可以配置VIM的make运行maven或在my Case,运行一个构建脚本,将其tee到一个文件中

    autocmd Filetype java setl makeprg=play_compile
    autocmd Filetype java setl efm=%A\ %#[error]\ %f:%l:\ %m,%-Z\ %#[error]\ %p^,%-C%.%#
    

"play_compile" is just a compile script. It uses SBT so Maven should work just fine here. Even direct javac will work. This way, you can use VIM"s quickfix buffer (:cnext, :clist: cprev, etc).

  • For jumping around the classes, I use ctrl-p. Its beautiful. Use it. Faster than eclipse in jumping around files.

  • For jumping around methods, I use tagsearch with exuberant c-tags. Jump into method declarations by using ctrl-]. Go back using Ctrl-o. Doesnt work as good as eclipse, but it works good enough.

  • I use supertab for code completion. Javacomplete is pretty slow, so I stick with omni-complete. Again, not as accurate as eclipse, but its fast and works good enough for me.