Note: The development of this plugin is finished. Accepts minor patches and issues but no new features. ddc.vim is the next generation auto completion plugin. Consider migrating to it.
neocomplcache is the abbreviation of "neo-completion with cache". It provides keyword completion system by maintaining a cache of keywords in the current buffer. neocomplcache could be customized easily and has a lot more features than the Vim's standard completion feature.
If you use Vim 7.3.885 or above with if_lua feature, you should use neocomplete. It is faster than neocomplcache.
https://github.com/Shougo/neocomplete.vim
- Extract the file and put files in your Vim directory (usually ~/.vim/ or Program Files/Vim/vimfiles on Windows).
- Execute
|:NeoComplCacheEnable|command orlet g:neocomplcache_enable_at_startup = 1in your.vimrc. Not in.gvimrc(_gvimrc)!
Because all variable names were changed in neocomplcache Ver.5, it is not backwards compatible. If you want to upgrade, you should use the following script from Mr.thinca.
Snippets feature(snippets_complete source) was split from Ver.7. If you used it, please install neosnippet source manually.
https://github.com/Shougo/neosnippet
Completion with vimshell(http://github.com/Shougo/vimshell).
Setting examples
"Note: This option must set it in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)!" Disable AutoComplPop.letg:acp_enableAtStartup=0" Use neocomplcache.letg:neocomplcache_enable_at_startup=1" Use smartcase.letg:neocomplcache_enable_smart_case=1" Set minimum syntax keyword length.letg:neocomplcache_min_syntax_length=3letg:neocomplcache_lock_buffer_name_pattern='\*ku\*'" Enable heavy features." Use camel case completion."let g:neocomplcache_enable_camel_case_completion = 1" Use underbar completion."let g:neocomplcache_enable_underbar_completion = 1" Define dictionary.letg:neocomplcache_dictionary_filetype_lists= {
\ 'default' : '',
\ 'vimshell' : $HOME.'/.vimshell_hist',
\ 'scheme' : $HOME.'/.gosh_completions'\ }
" Define keyword.if!exists('g:neocomplcache_keyword_patterns')
letg:neocomplcache_keyword_patterns= {}
endifletg:neocomplcache_keyword_patterns['default'] ='\h\w*'" Plugin key-mappings.inoremap<expr><C-g> neocomplcache#undo_completion()inoremap<expr><C-l> neocomplcache#complete_common_string()" Recommended key-mappings." <CR>: close popup and save indent.inoremap<silent><CR><C-r>=<SID>my_cr_function()<CR>function!s:my_cr_function()
returnneocomplcache#smart_close_popup() . "\<CR>"" For no inserting <CR> key."return pumvisible() ? neocomplcache#close_popup() : "\<CR>"endfunction" <TAB>: completion.inoremap<expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"" <C-h>, <BS>: close popup and delete backword char.inoremap<expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"inoremap<expr><BS> neocomplcache#smart_close_popup()."\<C-h>"inoremap<expr><C-y> neocomplcache#close_popup()inoremap<expr><C-e> neocomplcache#cancel_popup()" Close popup by <Space>."inoremap <expr><Space> pumvisible() ? neocomplcache#close_popup() : "\<Space>"" For cursor moving in insert mode(Not recommended)"inoremap <expr><Left> neocomplcache#close_popup() . "\<Left>""inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>""inoremap <expr><Up> neocomplcache#close_popup() . "\<Up>""inoremap <expr><Down> neocomplcache#close_popup() . "\<Down>"" Or set this."let g:neocomplcache_enable_cursor_hold_i = 1" Or set this."let g:neocomplcache_enable_insert_char_pre = 1" AutoComplPop like behavior."let g:neocomplcache_enable_auto_select = 1" Shell like behavior(not recommended)."set completeopt+=longest"let g:neocomplcache_enable_auto_select = 1"let g:neocomplcache_disable_auto_complete = 1"inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"" Enable omni completion.autocmdFileTypecsssetlocalomnifunc=csscomplete#CompleteCSS
autocmdFileTypehtml,markdownsetlocalomnifunc=htmlcomplete#CompleteTags
autocmdFileTypejavascriptsetlocalomnifunc=javascriptcomplete#CompleteJS
autocmdFileTypepythonsetlocalomnifunc=pythoncomplete#Complete
autocmdFileTypexmlsetlocalomnifunc=xmlcomplete#CompleteTags
" Enable heavy omni completion.if!exists('g:neocomplcache_force_omni_patterns')
letg:neocomplcache_force_omni_patterns= {}
endifletg:neocomplcache_force_omni_patterns.php ='[^. \t]->\h\w*\|\h\w*::'letg:neocomplcache_force_omni_patterns.c='[^.[:digit:] *\t]\%(\.\|->\)'letg:neocomplcache_force_omni_patterns.cpp='[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'" For perlomni.vim setting." https://github.com/c9s/perlomni.vimletg:neocomplcache_force_omni_patterns.perl='\h\w*->\h\w*\|\h\w*::'


