将Vim用作Java IDE的提示?[关闭]


195

我沉迷于Vim,这是我事实上的编辑文本文件的方式。

由于它主要是文本编辑器而不是IDE,有人开发过让我更轻松地开发Java应用程序的技巧吗?

我有一些问题:

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

我应该知道的其他内容(“不做!”除外)是什么?


1
我在工作中广泛使用netbeans,但是对于在家中的个人服务器来说,使用NetBeans效果不佳,因为我必须在另一台计算机上进行开发然后再进行部署。往返时间太长。
艾伦·拉隆德

1
@AdamC来自Google的入站信息...作为来自python的自认命令行怪胎,我认为通过使用此类程序大大提高了使用Java开发环境进行设置的入门门槛。我已经必须安装JVM ...为什么还要进行更多安装才能使世界变得更好?这只是来自脚本语言的人们在初学Java时所具有的一般性倾向。
DeaconDesperado 2013年

2
在VIM中编辑时。要回到控制台,您可以执行ctrl + z,这会将vim置于后台,并带您回到控制台。然后,您可以使用fg命令将vim带回到前台
Matthew Kirkley13年

您不必ctrl =
FuzzyTew

3
您不必ctrl + z / fg ..只需键入:!command即可运行“ command”。如果您想使用快速外壳,请输入:!bash。然后,如果退出,则返回vim,而不是留下闲荡的后台作业。您可以在带有插件的vim窗口中获取shell。
FuzzyTew15年

Answers:


75

一些技巧:

  • 确保使用vim(vi有所改进)。Linux和某些版本的UNIX symlink vi到vim。
  • 您可以使用eclim获得代码完成
  • 或者,您可以使用viPlugin在Eclipse中获得vi功能
  • vim的语法高亮很棒
  • Vim对编写小的宏(如运行ant / maven构建)具有良好的支持。

玩得开心 :-)


7
命令以获取有关Java语法突出显示的帮助。:help java.vim
Michael Ekoka 2010年

2
在Eclipse中获得Vim功能的另一种方法是Vrapper。它具有Vim的大多数键绑定,并且与viPlugin不同,它是免费的。
2013年

1
支持逐步,逐步执行等功能的调试器怎么样?
多纳托

1
Linux ... symlink vi到vim反例:Arch Linux
johnchen902'9

30

我已经成为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可能会增加诸如通过击键添加丢失的导入,带有键入问题的高亮代码等内容。


5
投票支持“ ^ wf”我不知道vim中有这样的事情:)
KrzysztofKrasoń2011年

4
您能详细说明^ wf吗?它能做什么?
user2427 2011年

1
.java如果能够找到文件,它将在新的拆分窗口中的光标下方打开Java文件/类(不需要扩展名)。这就是为什么:set path=**有帮助的原因。
exic 2012年

那么**实际上是两个星号吗?
塔可

1
@lijat- :help ^wf就像其他vim帮助一样
JESii

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和setters(java_getset,或eclim),自动导入(eclim)。您可能还需要一个Java Shell来进行快速实验(BeanShell,又名bsh)。


1
感谢您的BeanShell提示,我不知道该工具
GoingTharn 2012年



8

我知道这已经过去了很多年,但是这里有一些有趣的插件。我还没有尝试过这些,所以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等)。

  • 为了绕过类,我使用ctrl-p。真漂亮。用它。在文件中跳动比蚀更快。

  • 为了跳过方法,我将tagsearch与旺盛的c-tags一起使用。使用ctrl-]进入方法声明。使用Ctrl-o返回。效果不及日食,但效果很好。

  • 我使用supertab来完成代码。Javacomplete非常慢,所以我坚持使用omni-complete。再次,虽然不如日食精确,但它的速度快并且对我来说足够好。


5

使用vim。^-^(精确来说是gVim)

您将拥有所有这些(带有一些插件)。

顺便说一句,snippetsEmu是一个有用的代码进行编码的好工具(例如TextMate中的代码)。您可以使用(或修改)预制包装或自己制作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.