我在 Mac OS X 10.7 下工作。我在 Pathogen 的帮助下得到了javacomplete,但它只完成了 JDK 类,而不是我创建的类。当尝试全方位完成我的一个对象时,我得到“找不到模式”。这真的仅限于 JDK 类吗?如果没有,任何人都可以描述他们的配置。
顺便说一句,我尝试过创建ctags,但它也不适用于 javacomplete。但是,ctrl-x ctrl-]与创建的 ctags 一起工作得很好。
您需要为源设置类路径。
从 javacomplete 文档:
3. Set classpath using the following function: >
javacomplete#AddClassPath('jarfile_or_classes_path')
javacomplete#DelClassPath('jarfile_or_classes_path')
javacomplete#SetClassPath('semicolon_separated_string')
Another two variables will be used if they are existing:
|g:java_classpath| global classpath
|b:classpath| associated with current buffer
我已将以下内容添加到我的.vimrc以自动完成 android 项目:
if filereadable('AndroidManifest.xml')
call javacomplete#SetClassPath('/home/tidbeck/android/sdk/android-sdk-linux_x86/platforms/android-17/android.jar:libs/android-support-v4.jar:bin/classes')
call javacomplete#SetSourcePath('src')
endif
我注意到两件事:
javacomplete#AddClassPath
jar
即使文档这么说也不支持文件安装 vim 插件后,您必须将这些行添加到.vimrc
:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
autocmd Filetype java setlocal omnifunc=javacomplete#Complete
endif
我也无法让它与现有的标签文件(由创建ctags
)一起工作。如前所述,一种解决方法是取消设置tags
里面的 vim 选项.vimrc
。但这对我来说不是一个选择。我只是操纵javacomplete.vim
“忽略”标签文件。
补丁如下:
--- 自动加载/javacomplete.vim 2011-01-30 21:33:46.000000000 +0100 +++ /home/kndl/.vim/autoload/javacomplete.vim 2015-02-12 20:46:48.227465321 +0100 @@ -2510,7 +2510,8 @@ 呸!s:GetClassInfoFromSource(类,文件名) 让 ci = {} 如果 len(tagfiles()) > 0 - 让 ci = s:DoGetClassInfoFromTags(a:class) + " kndl: 停用 ctags 功能,因为这不起作用。看来我无法构建可接受的标签文件。 + "让 ci = s:DoGetClassInfoFromTags(a:class) 万一 如果为空(ci)
我使用了 javacomplete 插件和 supertab,我发现启用方法完成的最简单方法是使用另一个名为easytags.vim的插件,它会在您编译类时自动创建标签。从内存中它确实提供了用户定义的类和方法完成。