我沉迷于Vim,它现在是我编辑文本文件的事实上的方式.
因为它主要是一个文本编辑器而不是IDE,有没有人让我在开发Java应用程序时更容易?
我有一些问题:
如何在不离开vi的情况下调用maven任务?
我可以完成代码吗?
语法高亮怎么样?
我应该知道的其他事情(除了"不要做!"之外)?
一些技巧:
确保你使用vim(vi改进).Linux和某些版本的UNIX符号链接vi到vim.
您可以使用eclim完成代码完成
或者您可以使用viPlugin在Eclipse中获得vi功能
使用vim语法突出显示很棒
Vim很好地支持编写像运行ant/maven构建的小宏
玩得开心 :-)
我多年来一直是Vim用户.我开始发现自己偶尔启动Eclipse(使用vi插件,我不得不说,它有各种各样的问题).主要原因是Java构建需要相当长的时间......而且随着像maven这样的高度组件化构建框架的加入,它们变得越来越慢.因此验证您的更改往往需要相当长的时间,对我来说似乎经常会导致堆积一堆我稍后要解决的编译问题,并且通过提交消息进行过滤需要一段时间.
当我的编译问题队列太大时,我会启动Eclipse.它让我可以对变化进行蛋糕制作.它使用缓慢,残酷,而且与Vim的编辑差不多(我已经使用Vim近十年了,所以这是我的第二天性).我发现需要精确编辑 - 需要修复一个特定的bug,需要重构一些特定的逻辑或其他东西......我在Eclipse中编辑就像在Vim中编辑一样高效.
还有一个提示:
:set path=** :chdir your/project/root
这使得^wf
classname成为导航大型项目的一个非常好的功能.
所以,无论如何,当我需要添加大量新代码时,Vim似乎只是因为花时间追逐编译问题和类似的东西而让我失望.但是,当我需要查找和编辑特定来源时,Eclipse感觉就像一把大锤.我还在等待Vim神奇的IDE.我知道有三次重大尝试.有一个纯viml IDE类型的插件,它增加了许多功能,但似乎无法使用.有eclim,我遇到了很多麻烦.还有一个Eclipse插件实际上嵌入了Vim.对于真正严肃的Java EE工作来说,最后一个似乎是最有希望的,但它似乎没有很好地工作或者真正将Eclipse的所有功能与嵌入式Vim集成在一起.
在处理大型Java项目时,使用键击添加缺少的导入,键入问题的hilight代码等等,似乎对您的IDE非常有用.
如何在不离开vi的情况下调用maven任务?
Maven与任何其他shell命令没有什么不同:
:!mvn
你可以:set makeprg=mvn
,如果你已经有了自己最喜欢的键映射:make
.
我可以完成代码吗?
是的,eclim很棒,是vim编辑效率和Eclipse的Java语言特定意识之间的桥梁.
而且
不是很好,但非常有帮助.
语法高亮怎么样?
对于基于正则表达式的高级游戏来说,这已经足够了.
你可能想要考虑其他vim + java目的的工具,比如代码模板(snippetEmu -default片段很糟糕,但可定制性发光),搜索用法和去声明(eclim,grep,ctags),生成getter和setter(java_getset,或eclim),自动进口(eclim).您可能还需要一个用于快速实验的Java shell(BeanShell,又名bsh
).
我刚刚上传了这个Vim插件,用于开发Java Maven项目.
如果您还没有,请不要忘记设置突出显示:
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构建:
对于编译,您可以配置VIM的make以运行maven,或者在我的情况下,运行构建脚本,将其发送到文件.
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.很美丽.用它.跳跃文件比eclipse快.
为了跳转方法,我使用tagsearch和繁琐的c-tags.使用ctrl-]跳转到方法声明.使用Ctrl-o返回.不像日食一样好,但它的效果还不错.
我使用supertab来完成代码.Javacomplete很慢,所以我坚持使用omni-complete.再次,不像日食那么准确,但它的速度快,对我来说足够好.
使用vim.^ - ^(gVim,确切地说)
你会拥有它(有一些插件).
顺便说一句,snippetsEmu是一个很好的编码工具,有用的片段(如TextMate).您可以使用(或修改)预制包装或自己制作包装.