使用Vim作为Java IDE的提示?
我沉迷于Vim,现在是我编辑文本文件的事实上的方式。
因为它主要是一个文本编辑器,而不是一个IDE,有没有人有开发Java应用程序让我更容易的技巧?
我有一些问题:
- 如何在不离开vi的情况下调用Maven任务?
- 我可以获得代码完成吗?
- 语法高亮如何?
还有什么(除了“不要这样做!”),我应该知道吗?
一些技巧:
- 确保你使用vim(vi改进)。 Linux和一些版本的UNIX符号链接vi到vim。
- 您可以使用eclim获得代码完成
- 或者你可以用viPlugin在Eclipse中获得vi的function
- Vim的语法高亮显得非常棒
- Vim对编写像运行ant / maven版本的小macros很好的支持
玩的开心 :-)
我一直是一个Vim用户多年。 我开始发现自己偶尔会启动Eclipse(使用vi插件,我不得不说,它有各种各样的问题)。 主要的原因是Java构build需要相当长的一段时间,而且随着maven等高度组件化的构build框架的增加,它们也越来越慢。 因此,validation您的更改往往需要一段时间,对我来说,这似乎经常会导致我必须稍后解决一堆编译问题,并且通过提交消息进行筛选需要一段时间。
当我遇到一大堆编译问题时,我启动Eclipse。 它可以让我做出改变的蛋糕。 它使用起来很慢,很残忍,而且几乎不像Vim那么好(我已经使用了Vim近十年了,所以对我来说是第二性质)。 我发现精确编辑 – 需要修复一个特定的错误,需要重构一些特定的逻辑或其他东西…我不能像在Vim中那样在Eclipse中进行编辑。
另外一个提示:
:set path=** :chdir your/project/root
这使得在类名上使用^wf
是导航大型项目的一个非常好的function。
所以无论如何,当我需要添加大量新代码的时候,Vim似乎让我放慢了脚步,只是因为花时间去追查编译问题和类似的东西。 当我需要查找和编辑特定的源代码时,Eclipse感觉像是一个大锤。 我仍然在等Vim的魔法IDE。 我知道有三个主要的尝试。 有一个纯viml IDEtypes的插件,增加了很多function,但似乎不可能使用。 有eclim,我遇到了很多麻烦。 还有一个Eclipse插件实际上embedded了Vim。 最后一个对于真正认真的Java EE工作似乎是最有希望的,但似乎并不能很好地工作,或者真的将Eclipse的所有function与embedded式Vim集成在一起。
像在一个大的Java项目上工作时,用键盘input缺less的input,键入问题的hilight代码等,似乎对你的IDE来说是无价的。
-
如何在不离开vi的情况下调用Maven任务?
Maven和其他shell命令没有区别:
:!mvn
你可以
:set makeprg=mvn
如果你已经有一个最喜欢的键映射:make
。 -
我可以获得代码完成吗?
是的, eclim很棒,是vim的编辑效率和Eclipse的Java语言特定意识之间的桥梁。
<Cn>
和<Cp>
不是很好,但是非常有帮助。 -
语法高亮如何?
对于一个正则expression式来说,这已经足够了。
您可能需要考虑用于其他vim + java目的的工具,如代码模板( snippetEmu -default snippets suck,但是可定制性闪耀),search用法和声明(eclim,grep,ctags),生成getter和setter( java_getset ,或eclim),自动导入(eclim)。 您可能还需要一个用于快速实验的Java shell( BeanShell ,又名bsh
)。
我刚刚上传了这个用于Java Maven项目开发的Vim插件 。
如果您尚未设置突出显示,请不要忘记:
https://github.com/sentientmachine/erics_vim_syntax_and_color_highlighting
我发现以下摘要非常有用: http : //www.techrepublic.com/article/configure-vi-for-java-application-development/5054618 。 make的描述是为ant而不是maven,但是另外一个很好的总结。
我知道这是几年后,但这里有一些有趣的插件。 我还没有尝试过这些YMMV。
https://github.com/mikelue/vim-maven-plugin
https://github.com/vim-scripts/maven-ide
编辑:哦,顺便说一句,我已经试过eclim了,但我喜欢vim的原因是它的轻盈。 即使在无头模式下执行日食也对我来说太过头脑了。
编辑2:我最近一直在使用playframework,这可能也适用于Maven构build:
-
对于编译,你可以configurationVIM的make来运行maven,或者在我的情况下,运行一个构build脚本,将其发送到一个文件。
autocmd Filetype java setl makeprg=play_compile autocmd Filetype java setl efm=%A\ %#[error]\ %f:%l:\ %m,%-Z\ %#[error]\ %p^,%-C%.%#
“play_compile”只是一个编译脚本。 它使用SBT所以Maven应该在这里工作得很好。 即使直接javac将工作。 这样,你可以使用VIM的quickfix缓冲区(:cnext,:clist:cprev等)。
-
为了在类中跳转,我使用了ctrl-p 。 这很漂亮。 用它。 在跳跃文件比日食更快。
-
为了跳过方法,我使用了带有丰富c标签的tagsearch。 通过使用Ctrl-]跳转到方法声明。 回去使用Ctrl-o。 没有像日食一样好,但它工作得很好。
-
我使用supertab代码完成。 Javacomplete相当慢,所以我坚持全面完整。 再次,不如日食准确,但它的速度和工作对我来说足够好。
使用vim。 ^ – ^(gVim,准确地说)
你将拥有一切(有一些插件)。
顺便说一句, snippetsEmu是用有用的片段编码(如在TextMate中)的一个很好的工具。 您可以使用(或修改)一个预先制作的软件包或制作您自己的软件包。