A tiny and portable script (169 lines) to provide you YouCompleteMe like experience for buffer, dictionary and tags completion without installing heavy completion engines and building background servers.
Semantic completion is great, but sometimes, when you are coding in an obscure laguange which is lack of LSP support, or you are working in a temporary system and you don't want waste time to set up a heavyweight completion engine and build a background server.
In these circumstances, vim's built-in completion system is good enough for you, it can collect keywords from buffers and dictionary or ctag files, but requires you to press <c-n> or <c-x><c-k> manually.
This tiny little script will help you to trigger the completion menu when you have entered 1 or 2 alphabets and provide you exact the same experience like YouCompleteMe:
- Popup the completion menu automatically.
Taborshift+TABto cycle keywords,<c-e>to cancel.- Same experience like
YouCompleteMeforbuffer,dictandtagscompletion. - Green, everything is local to buffer, will not pollute your vim or disturb other plugins.
- Capable to co-exist with other completion plugins.
- No heavy engines, no need to build background servers.
- Faster and more handy than the old famous
AutoComplPop. - Portable, just a simple
apc.vimscript, easy to be distributed. - Only 169 lines, you can even copy it to your
vimrc. - Convenience as a backup way for big completion plugins.
That's all you need:
Plug 'skywind3000/vim-auto-popmenu'
" enable this plugin for filetypes, '*' for all files.
let g:apc_enable_ft = {'text':1, 'markdown':1, 'php':1}
" source for dictionary, current or other loaded buffers, see ':help cpt'
set cpt=.,k,w,b
" don't select the first item.
set completeopt=menu,menuone,noselect
" suppress annoy messages.
set shortmess+=cAnd perhaps a dictionary database plugin for many languages:
Plug 'skywind3000/vim-dict'
Then you go.
Enable plugin for the current buffer manually. Useful when you didn't set g:apc_enable_ft.
Disable plugin for the current buffer.
If you are using YouCompleteMe, disable it for certain filetypes:
let g:ycm_filetype_blacklist = {'text':1, 'markdown':1, 'php':1}and enable this plugin for these files:
let g:apc_enable_ft = {'text':1, 'markdown':1, 'php':1}1) g:apc_enable
Default: 1 Set to 0 to disable this plugin.
2) b:apc_enable
Default: unset Set to 0 to disable this plugin for certain buffer.
3) g:apc_min_length
Default: 2 Minimal characters to trigger the completion popup menu.
4) g:apc_trigger
Default: "\<c-n>"
Key to trigger the completion popup menu.
Set to "\<c-x>\<c-o>" to trigger omni completion.
5) b:apc_trigger
Default: unset
Specify trigger key for certain buffer, will override g:apc_trigger for certain buffer.
6) g:apc_cr_confirm
Default: 0
Set to 1 to allow you choose the current keyword by ENTER.
