问题 Vim omnicompletion for Java


我已经阅读了关于Vim所谓的伟大的omnicompletion的大量博客,但无论我做什么,我都无法令人满意地工作。我花了很多时间才发现我的系统上预装的ctags版本是emacs版本,并且没有--recurse选项,但现在我在OpenJDK的副本上运行了ctags-exuberant尝试获取某种代码完成的源代码,每当我尝试使用[Cn]或[Cp]调用它时,Vim就会挂起。

所有我真正想要的东西就像Eclipse中的代码完成一样;我喜欢Vim作为编辑器,但Eclipse只是具有开箱即用的额外功能,Vim似乎失败了。带有vi-mode插件的Eclipse对我来说并不是特别有用,而且它有太多的内存和CPU占用任何用途; eclim也不太喜欢我。

任何人都可以建议一种更简单的方法来获得在Vim中实际工作的某种代码完成吗?


6377
2017-10-21 14:32


起源



答案:


这是vim的“JDE”功能: http://www.vim.org/scripts/script.php?script_id=1213  列出的功能之一是“代码完成(适用于java和jsp,taglib,html,xml,xsl,xsd)(需要VIM 7.0)”

这是一个Java自动完成脚本: http://vim.sourceforge.net/scripts/script.php?script_id=1785

这个不是Java,但我发现它非常清晰易懂;也许值得一读。这是关于为Drupal设置自动完成的配方。自定义AWK脚本为vim构建自动完成字典。 http://www.thingy-ma-jig.co.uk/blog/18-08-2009/drupal-autocomplete-vim

祝你好运。


8
2017-10-23 07:57



谢谢你的建议。你有没有尝试过JDE和javacomplete?你有什么偏好?我尝试过javacomplete,但它并不总是适合我(没有挖到原因)。我要去看看JDE吧! - Hannes


答案:


这是vim的“JDE”功能: http://www.vim.org/scripts/script.php?script_id=1213  列出的功能之一是“代码完成(适用于java和jsp,taglib,html,xml,xsl,xsd)(需要VIM 7.0)”

这是一个Java自动完成脚本: http://vim.sourceforge.net/scripts/script.php?script_id=1785

这个不是Java,但我发现它非常清晰易懂;也许值得一读。这是关于为Drupal设置自动完成的配方。自定义AWK脚本为vim构建自动完成字典。 http://www.thingy-ma-jig.co.uk/blog/18-08-2009/drupal-autocomplete-vim

祝你好运。


8
2017-10-23 07:57



谢谢你的建议。你有没有尝试过JDE和javacomplete?你有什么偏好?我尝试过javacomplete,但它并不总是适合我(没有挖到原因)。我要去看看JDE吧! - Hannes


我和eclim一起去了:

http://eclim.sourceforge.net/

不久之前,它基本上在后台运行eclipse,然后提供一个vim插件,让你可以在vim中获得eclipse的所有功能。所以你可以做重构,完成等。如果你不介意在你的系统后台运行一个巨大的eclipse进程,它似乎工作得很好。

我已经完成了很好的C ++工作(无论如何都比Vis更好),但从来没有运气好java。这些天我倾向于大部分时间都使用eclipse但是我在eclipse中将gvim --remote设置为外部命令,这样我就可以随时将当前缓冲区擦入vim。


5
2017-10-29 11:15



顺便说一句,最后一段提到vim是建立在全方位完成,而不是eclim。 - Benj


有同样的愿望,通过使用实现它 eclim。工作真的很好。


1
2017-10-25 14:25





我一直在寻找这个以及我正在考虑从eclipse转移到vim。到目前为止我找到的最好的解决方案是将vim与vrapper一起使用( http://vrapper.sourceforge.net/ )。它为eclipse编辑器带来了vim的许多功能,你仍然可以使用自动完成和Eclipse的所有其他功能。

我仍然对完全移动感兴趣,但是对于java开发环境来说似乎很难击败eclipse。 (只是讨厌日食的开销!)


1
2017-10-18 19:21



提示:vrapper它有[C-p]完成。您只需要禁用打印命令(双CTRL + SHIFT + L,搜索CTRL + P)。谁还需要打印代码? - Dacav
一般来说,我注意到你可以通过摆脱默认的键绑定来获得类似vim的行为,默认的键绑定优先于vrapper定义的键绑定。 - Dacav