我已经阅读了关于Vim所谓的伟大的omnicompletion的大量博客,但无论我做什么,我都无法令人满意地工作。我花了很多时间才发现我的系统上预装的ctags版本是emacs版本,并且没有--recurse选项,但现在我已经在我的OpenJDK副本上运行了ctags-exuberant尝试使用[Cn]或[Cp]调用它时,Vim会挂起来试图获得某种代码的完成。
我真正想要的是像Eclipse中的代码完成一样的东西;我喜欢Vim作为编辑器,但Eclipse只是具有开箱即用的额外功能,Vim似乎失败了。带有vi-mode插件的Eclipse对我来说并不是特别有用,而且它有太多的内存和CPU占用任何用途; eclim也不太喜欢我。
任何人都可以建议一种更简单的方法来在Vim中实现某种实际工作的代码完成吗?
答案 0 :(得分:8)
这是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
祝你好运。答案 1 :(得分:5)
我和eclim一起去了:
前一段时间,它基本上在后台运行eclipse,然后提供了一个vim插件,让你可以在vim中获得eclipse的所有功能。所以你可以做重构,完成等。如果你不介意在你的系统后台运行一个巨大的eclipse进程,它似乎工作得很好。
我在C ++中完成了很好的工作(无论如何都比Vis更好),但从来没有过很多运气。这些天我大多数时候都倾向于使用eclipse但是我在eclipse中使用gvim --remote设置为外部命令,这样我就可以随时将当前缓冲区刷成vim。
答案 2 :(得分:1)
有同样的愿望,使用eclim来实现它。工作得非常好。
答案 3 :(得分:1)
我一直在寻找这个以及我正在考虑从eclipse转移到vim。到目前为止,我发现的最佳解决方案是使用vrapper(http://vrapper.sourceforge.net/)将vim带入eclipse。它为eclipse编辑器带来了vim的许多功能,你仍然可以使用自动完成和Eclipse的所有其他功能。
我仍然对完全移动感兴趣,但似乎很难在java开发环境中击败eclipse。 (只是讨厌日食的开销!)