127 lines
No EOL
4.1 KiB
Text
127 lines
No EOL
4.1 KiB
Text
*vim-code_completion.html*
|
|
|
|
Code Completion
|
|
***************
|
|
|
|
|
|
Usage
|
|
=====
|
|
|
|
All the code completion functionality provided by eclim (ant, java,
|
|
etc) makes use of the new "User Defined Completion" added to Vim 7.
|
|
To initiate code completion enter insert mode and type Ctrl-X Ctrl-U.
|
|
By default Vim will open a popup if there is more than one completion.
|
|
|
|
*g:EclimCompletionMethod*
|
|
|
|
Note: If you would prefer to have eclim use vim's omni code
|
|
completion instead, you can add the following to your vimrc:>
|
|
|
|
let g:EclimCompletionMethod = 'omnifunc'
|
|
|
|
<
|
|
|
|
|
|
When using omnifunc you will use Ctrl-X Ctrl-O to start code
|
|
completion.
|
|
|
|
Example with java completion
|
|
|
|
[image]
|
|
|
|
Once you have started the completion you can use Ctrl-N to proceed to
|
|
the next match and Ctrl-P to move to the previous match.
|
|
|
|
To find out more about Vim's insert completion execute the following
|
|
from within Vim:
|
|
|
|
>
|
|
|
|
:h ins-completion
|
|
|
|
<
|
|
|
|
|
|
|
|
Third Party Completion Plugins
|
|
==============================
|
|
|
|
If you are like me and you find the above key strokes a bit
|
|
cumbersome, then you might want to check out one of the following
|
|
plugins which can make completion usage less cumbersome:
|
|
|
|
- SuperTab (https://github.com/ervandew/supertab): This plugin's aim
|
|
is to allow you to use <tab> for all your code completion needs.
|
|
By default supertab will use vim's keyword completion on <tab>, so
|
|
you probably want to at least add the following setting to your
|
|
vimrc:
|
|
|
|
>
|
|
let g:SuperTabDefaultCompletionType = 'context'
|
|
|
|
<
|
|
|
|
That will tell supertab to use keyword completion unless you are
|
|
attempting to access a member of an object or class, in which case
|
|
it will use your user completion method, such as eclim.
|
|
|
|
- AutoComplPop (https://bitbucket.org/ns9tks/vim-autocomplpop): This
|
|
plugin will automatically open the completion popup for you after
|
|
you've typed a preconfigured number of characters.
|
|
AutoComplPop by default only supports triggering code completion for
|
|
file types who have an omni completion that ships with vim, but you
|
|
can configure it to support eclim code completion. Here is an
|
|
example of some vim script you can add to your vimrc to enabled
|
|
AutoComlPop for java file types (this example will trigger the
|
|
completion popup when at least 3 characters have been typed after a
|
|
dot, but you can tweak this to your tastes):
|
|
|
|
>
|
|
let g:acp_behaviorJavaEclimLength = 3
|
|
function MeetsForJavaEclim(context)
|
|
return g:acp_behaviorJavaEclimLength >= 0 &&
|
|
\ a:context =~ '\k\.\k\{' . g:acp_behaviorJavaEclimLength . ',}$'
|
|
endfunction
|
|
let g:acp_behavior = {
|
|
\ 'java': [{
|
|
\ 'command': "\<c-x>\<c-u>",
|
|
\ 'completefunc' : 'eclim#java#complete#CodeComplete',
|
|
\ 'meets' : 'MeetsForJavaEclim',
|
|
\ }]
|
|
\ }
|
|
|
|
<
|
|
|
|
- neocomplcache (https://github.com/Shougo/neocomplcache.vim):
|
|
Another completion plugin which will automatically open the
|
|
completion popup for you as you type. Configuring neocomplecache is
|
|
a bit easier than AutoComplPop. You just need to tell eclim to
|
|
register its completion to vim's omni complete, then force
|
|
neocomplcache to use it. Here is an example for forcing the use of
|
|
eclim's code completion for the java file type when you attempt to
|
|
access an object/class member:
|
|
>
|
|
let g:EclimCompletionMethod = 'omnifunc'
|
|
|
|
if !exists('g:neocomplcache_force_omni_patterns')
|
|
let g:neocomplcache_force_omni_patterns = {}
|
|
endif
|
|
let g:neocomplcache_force_omni_patterns.java = '\k\.\k*'
|
|
|
|
<
|
|
|
|
- YouCompleteMe (https://github.com/Valloric/YouCompleteMe): Yet
|
|
another completion plugin which will automatically open the
|
|
completion popup for you and which also adds fuzzy matching of
|
|
completion results. This plugin does have a compiled component to it
|
|
so be sure to read their install docs thoroughly.
|
|
Once installed, the only required configuration you should need is
|
|
the following which tells eclim to register its completion to vim's
|
|
omni complete which YouCompleteMe will automatically detect and use:
|
|
|
|
>
|
|
let g:EclimCompletionMethod = 'omnifunc'
|
|
|
|
<
|
|
|
|
vim:ft=eclimhelp |