我沉迷于Vim,现在是我编辑文本文件的事实上的方法。
因为它主要是一个文本编辑器而不是IDE,有没有人让我在开发Java应用程序时更容易?
我有些问题:
我应该知道的其他事情(除了“不要做!”之外)?
答案 0 :(得分:74)
一些提示:
玩得开心: - )
答案 1 :(得分:30)
我多年来一直是Vim用户。我开始发现自己偶尔启动Eclipse(使用vi插件,我不得不说,它有各种各样的问题)。主要原因是Java构建需要相当长的时间......而且随着像maven这样的高度组件化构建框架的加入,它们变得越来越慢。因此,验证您的更改往往需要相当长的时间,这对我来说似乎经常会导致堆积一堆我必须稍后解决的编译问题,并且通过提交消息进行过滤需要一段时间。
当我的编译问题队列太大时,我会启动Eclipse。它让我可以对变化进行蛋糕制作。它使用缓慢,残酷,而且与Vim的编辑差不多(我已经使用Vim近十年了,所以这是我的第二天性)。我找到了精确编辑 - 需要修复一个特定的bug,需要重构一些特定的逻辑或其他东西......我在Eclipse中编辑时效率不如Vim。
也是一个提示:
:set path=**
:chdir your/project/root
这使得类名上的^wf
成为导航大型项目的一个非常好的功能。
所以,无论如何,当我需要添加大量新代码时,Vim似乎只是因为花时间追逐编译问题和类似的东西而让我失望。但是,当我需要查找和编辑特定来源时,Eclipse感觉就像一把大锤。我还在等待Vim神奇的IDE。我知道有三次重大尝试。有一个纯viml IDE类型的插件,它增加了许多功能,但似乎无法使用。有eclim,我遇到了很多麻烦。还有一个Eclipse插件实际上嵌入了Vim。对于真正严肃的Java EE工作来说,最后一个似乎是最有希望的,但它似乎没有很好地工作或者真正将Eclipse的所有功能与嵌入式Vim集成。
在处理大型Java项目时,使用键击添加缺少的导入,键入问题的hilight代码等等,似乎对您的IDE来说是非常宝贵的。
答案 2 :(得分:22)
如何在不离开vi的情况下调用maven任务?
Maven与任何其他shell命令没什么区别:
:!mvn
如果您已经拥有:set makeprg=mvn
的收藏键映射,则可以:make
。
我可以完成代码吗?
是的,eclim很棒,是vim编辑效率与Eclipse Java语言特定意识之间的桥梁。
<C-n>
和<C-p>
并不是那么好,但非常有帮助。
语法突出显示如何?
对于基于正则表达式的高级游戏来说,还不够好。
你可能想要考虑其他vim + java目的的工具,比如代码模板(snippetEmu - 默认片段很糟糕,但可定制性闪耀),搜索用法和去声明(eclim,grep,ctags),生成getter和setter(java_getset或eclim),自动导入(eclim)。您可能还需要一个用于快速实验的Java shell(BeanShell,a.k.a。bsh
)。
答案 3 :(得分:9)
我刚刚上传了this Vim plugin来开发Java Maven项目。
如果您还没有设置突出显示,请不要忘记:
https://github.com/sentientmachine/erics_vim_syntax_and_color_highlighting
答案 4 :(得分:8)
我发现以下摘要非常有用:http://www.techrepublic.com/article/configure-vi-for-java-application-development/5054618。描述:make是针对ant而不是maven,但另有一个很好的总结。
答案 5 :(得分:8)
我知道这是几年之后但是这里有一些有趣的插件。我还没有尝试过这些YMMV。
https://github.com/mikelue/vim-maven-plugin
https://github.com/vim-scripts/maven-ide
编辑:哦,顺便说一下,我已经尝试过eclim,但我喜欢vim的原因是它的轻盈。即使在无头模式下执行日食对我来说也是太多精神上的提升。EDIT2:我最近一直在使用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等)。
答案 6 :(得分:5)
使用vim。 ^ - ^(准确地说是gVim)
你会拥有它(有一些插件)。
顺便说一句,snippetsEmu是一个很好的工具,可以用有用的片段进行编码(比如TextMate)。您可以使用(或修改)预先制作的包裹或制作自己的包裹。