我沉迷于Vim,这是我事实上的编辑文本文件的方式。
由于它主要是文本编辑器而不是IDE,有人开发过让我更轻松地开发Java应用程序的技巧吗?
我有一些问题:
- 如何在不离开vi的情况下调用maven任务?
- 我可以完成代码吗?
- 语法高亮如何?
我应该知道的其他内容(“不做!”除外)是什么?
我沉迷于Vim,这是我事实上的编辑文本文件的方式。
由于它主要是文本编辑器而不是IDE,有人开发过让我更轻松地开发Java应用程序的技巧吗?
我有一些问题:
我应该知道的其他内容(“不做!”除外)是什么?
Answers:
一些技巧:
玩得开心 :-)
我已经成为Vim用户多年了。我开始发现自己偶尔会启动Eclipse(使用vi插件,我不得不说它有很多问题)。主要原因是Java构建需要花费相当长的时间...并且通过添加像maven这样的高度组件化的构建框架,它们的速度越来越慢。因此,验证您的更改通常需要花费相当长的时间,对我而言,这似乎常常导致堆积一堆我以后必须解决的编译问题,并且过滤提交消息需要一段时间。
当我遇到太多的编译问题时,我启动Eclipse。它使我可以轻松应对变化。它速度慢,使用残酷,并且不像Vim那样好用(我已经使用Vim近十年了,所以对我来说是第二天性)。我发现需要进行精确的编辑-需要修复特定的错误,需要重构某些特定的逻辑位或其他内容...我在Eclipse中进行编辑的效率根本无法像在Vim中那样高效。
还有一个提示:
:set path=**
:chdir your/project/root
这使^wf
类名成为用于导航大型项目的非常不错的功能。
因此,无论如何,很瘦,当我需要添加很多新代码时,Vim似乎只是因为花费时间来解决编译问题和类似问题而使我慢下来。但是,当我需要查找和编辑特定资源时,Eclipse就像一把大锤。我仍在等待Vim的神奇IDE。我知道有三大尝试。有一个纯viml IDE类型的插件,它添加了许多功能,但似乎无法使用。eclim,我遇到了很多麻烦。还有一个用于Eclipse的插件,它实际上嵌入了Vim。对于真正认真的Java EE工作,最后一个似乎是最有前途的,但是它似乎不能很好地工作,或者不能真正将Eclipse的所有功能与嵌入式Vim集成在一起。
在大型Java项目上工作时,IDE可能会增加诸如通过击键添加丢失的导入,带有键入问题的高亮代码等内容。
.java
如果能够找到文件,它将在新的拆分窗口中的光标下方打开Java文件/类(不需要扩展名)。这就是为什么:set path=**
有帮助的原因。
:help ^wf
就像其他vim帮助一样
如何在不离开vi的情况下调用maven任务?
Maven与任何其他shell命令没有什么不同:
:!mvn
你可以:set makeprg=mvn
,如果你已经有了自己最喜欢的键映射:make
。
我可以完成代码吗?
是的,eclim很棒,是vim的编辑效率和Eclipse的Java特定语言意识之间的桥梁。
<C-n>
而且<C-p>
不是很好,但是非常有用。
语法高亮如何?
足以满足基于正则表达式的高级编程器的要求。
您可能需要考虑用于其他vim + java目的的工具,例如代码模板(snippetEmu-默认代码片段很烂,但可定制性很出色),搜索用法并进行声明(eclim,grep,ctags),生成getter和setters(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的描述不是针对蚂蚁,而是一个不错的摘要。
我知道这已经过去了很多年,但是这里有一些有趣的插件。我还没有尝试过这些,所以YMMV。
https://github.com/mikelue/vim-maven-plugin
https://github.com/vim-scripts/maven-ide
编辑:哦,顺便说一句,我已经尝试过断断续续的尝试,但是我喜欢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等)。
使用vim。^-^(精确来说是gVim)
您将拥有所有这些(带有一些插件)。
顺便说一句,snippetsEmu是一个有用的代码进行编码的好工具(例如TextMate中的代码)。您可以使用(或修改)预制包装或自己制作。